ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Policy по упаковке модулей Node.js
@ 2020-02-27 21:27 Vitaly Lipatov
  2020-02-28  3:46 ` Anton Farygin
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Vitaly Lipatov @ 2020-02-27 21:27 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Хочу предложить на обсуждение полиси по упаковке модулей для Node.js:
https://www.altlinux.org/Node.js_Policy


-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Policy по упаковке модулей Node.js
  2020-02-27 21:27 [devel] Policy по упаковке модулей Node.js Vitaly Lipatov
@ 2020-02-28  3:46 ` Anton Farygin
  2020-02-28  7:15   ` Ivan A. Melnikov
  2020-02-28  8:33 ` Скрылевъ Малъ
  2020-03-03 17:01 ` Alexey Shabalin
  2 siblings, 1 reply; 6+ messages in thread
From: Anton Farygin @ 2020-02-28  3:46 UTC (permalink / raw)
  To: devel

On 28.02.2020 00:27, Vitaly Lipatov wrote:
> Хочу предложить на обсуждение полиси по упаковке модулей для Node.js:
> https://www.altlinux.org/Node.js_Polic

Спасибо. Выглядит хорошо, намного лучше чем без него.




^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Policy по упаковке модулей Node.js
  2020-02-28  3:46 ` Anton Farygin
@ 2020-02-28  7:15   ` Ivan A. Melnikov
  0 siblings, 0 replies; 6+ messages in thread
From: Ivan A. Melnikov @ 2020-02-28  7:15 UTC (permalink / raw)
  To: ALT Linux Team development discussions

[-- Attachment #1: Type: text/plain, Size: 418 bytes --]

On Fri, Feb 28, 2020 at 06:46:52AM +0300, Anton Farygin wrote:
> On 28.02.2020 00:27, Vitaly Lipatov wrote:
> > Хочу предложить на обсуждение полиси по упаковке модулей для Node.js:
> > https://www.altlinux.org/Node.js_Policy
> 
> Спасибо. Выглядит хорошо, намного лучше чем без него.

+1

-- 
  wbr,
    iv m.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 195 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Policy по упаковке модулей Node.js
  2020-02-27 21:27 [devel] Policy по упаковке модулей Node.js Vitaly Lipatov
  2020-02-28  3:46 ` Anton Farygin
@ 2020-02-28  8:33 ` Скрылевъ Малъ
  2020-03-03 17:01 ` Alexey Shabalin
  2 siblings, 0 replies; 6+ messages in thread
From: Скрылевъ Малъ @ 2020-02-28  8:33 UTC (permalink / raw)
  To: ALT Linux Team development discussions



28.02.2020, 00:28, "Vitaly Lipatov" <lav@altlinux.ru>:
> Хочу предложить на обсуждение полиси по упаковке модулей для Node.js:
> https://www.altlinux.org/Node.js_Policy
>

>    Важно учитывать, что модулей для node (npm-пакетов) многие тысячи, и никакого смысла собирать в репозиторий в виде rpm-пакетов их нет, тем более невозможно учесть разницу в версиях.
>    Необходимо собирать в пакеты только те модули, которые требуют компиляции (с системными библиотеками), а также модули, которые являются программами в /usr/bin (например, npm, yarn, sass, node-gyp и подобное).``

Думаю тут не нужно впрадать в крайности, типа есть модулей тычячи то и собирать их не надо. Я считаю, что каждый модуль должен быть форомблен в качестве пакет, по двум причинам: 
* переиспользование модуля приложениями, и другими модулями, потому что кроме того, что есть несколько приложений, которые за собою тащат много повторяющихся модулей, но и модули этих приложений также тащат уже повторные копии тех же самых модулей, что приводит к тому,что в одном пакете приложения, я насчитаю несколько единиц копий одного и того же модуля, а для модулей нижнего уровня этот счёт по видимости может составлять десятки.
* разрешение путаницы как для наших так и для сторонних разработчиков, путаницы такой что будут обязательно вопрос почему это  такой-то модуль собран отдельно а такой-то нет. А где вопросы там и смущение....

Для меня основным критерием необходимости попадания модуля в репозиторий есть тот, что, необходим ли этот самый модуль вышестоящему приложению или нет, то есть собирать модуль только потому что де он мне понравился смысла не имеет, а вот собирать его потому, что он нужен приложению, имеет.

> Программа на nodejs не является модулем для nodejs, поэтому указывать префикс, как у модуля, не требуется.
Что тут понимается под понятием программа?

Я тут бы разделил, на 2 понятие - приложение и утилита:
* приложение это любое приложение на node, зависимости запуска и работу которого определяются в том числе файлом описания проекта package.json, но при этом, оно не опубликовано на npmjs (не nodejs, такого понятия в мире node нету %) )
* утилита - собственно в некотором роде тоже программа, как правило оформленная в виде запускаемого файла, в котором в качестве интерпретатора указано node.

Ну и правила оформления такие: 
для приложения это srpm имеет имя без nodejs/npmjs, целевые rpm также
для утилиты srpm может иметь префикс nodejs/npmjs, если этот фай находится в репозитории npmjs, а целевые rpm делятся на библиотеку с темже префиктом, и утилиту - без префикса, ну по типу деления в обычных компилируемых модулях, напр: soft/libsoft, дада тут префикс имеет смысл именно как в этом паре. 

>Название пакета с модулем для node: nodejs-<имя>.

Я сторонник npmjs, как более понятного для внешнего разработчика знакомого с фреймворком node.

> И ассоциироваться такой префикс должен не с хранилищем (то есть с сайтом, который и поменяться может), а с названием экосистемы для пакетов, среды их исполнения. 

Название хранилище может поменяться ровно в тойже степени как и само название node, так что это не очень довод. На моей памяти менялось и то и другое, причём переименование языка влечет более тяжкие последствия.

> Традиционно принято в качестве префикса использовать название языка. Так в репозитории Сизиф есть пакеты erlang-*, python-*, perl-*, ruby-*, php-* java-*. Возможно кому-то показалось, что это названия языков, на которых написаны модули. Нет, зачастую такие модули написаны на C, а не на php. И префикс имени пакета для языковых систем показывает, расширение какого языка поставляет этот пакет.

Я уже написал, что для ruby/python/erlang это недействительно 


--
> С уважением,
> Виталий Липатов,
> ALT Linux Team
> _______________________________________________
> Devel mailing list
> Devel@lists.altlinux.org
> https://lists.altlinux.org/mailman/listinfo/devel



-- 

Малъ Скрылевъ
about.me/majioa



^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Policy по упаковке модулей Node.js
  2020-02-27 21:27 [devel] Policy по упаковке модулей Node.js Vitaly Lipatov
  2020-02-28  3:46 ` Anton Farygin
  2020-02-28  8:33 ` Скрылевъ Малъ
@ 2020-03-03 17:01 ` Alexey Shabalin
  2020-03-03 17:37   ` Vitaly Lipatov
  2 siblings, 1 reply; 6+ messages in thread
From: Alexey Shabalin @ 2020-03-03 17:01 UTC (permalink / raw)
  To: ALT Linux Team development discussions

пт, 28 февр. 2020 г. в 00:28, Vitaly Lipatov <lav@altlinux.ru>:
>
> Хочу предложить на обсуждение полиси по упаковке модулей для Node.js:
> https://www.altlinux.org/Node.js_Policy
>

В целом нормально.
Есть вопросы:
1)
> Все пакеты npmjs паковать в rpm было бы неправильно, потому что они уже суть упакованные модули для nodejs.
> А вот пакеты для nodejs, использующие нативные библиотеки, паковать нужно обязательно, иначе невозможно обеспечить сборку бинарной части такого пакета.

Что имеется ввиду под "нативные"? библиотеки на c/c++ ?
Если да, то почему в качестве пример выбран node-webpack, в нем нет
бинарных библиотек.

2) Как использовать эти пакеты (sass, node-gyp) при сборке своих пакетов?
Я пока другого способа, как в %prep сделать симлинки, не придумал:
%prep
%setup -q
%patch -p1
ln -sf %nodejs_sitelib/node-gyp node_modules/node-gyp
ln -sf %nodejs_sitelib/node-sass node_modules/node-sass
ln -sf %nodejs_sitelib/npm node_modules/npm

Получается не совсем удобная схема.
Вот собираю я grafana.
запустил в своём бранче
yarn install --pure-lockfile
в получившемся node_modules поудалял node-sass, node-gyp, что бы потом
в %prep сделать симлинки на  системные.
Может есть рекомендации, как это сделать лучше?


-- 
Alexey Shabalin

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [devel] Policy по упаковке модулей Node.js
  2020-03-03 17:01 ` Alexey Shabalin
@ 2020-03-03 17:37   ` Vitaly Lipatov
  0 siblings, 0 replies; 6+ messages in thread
From: Vitaly Lipatov @ 2020-03-03 17:37 UTC (permalink / raw)
  To: ALT Linux Team development discussions; +Cc: Alexey Shabalin

Alexey Shabalin писал 3.3.20 20:01:
...
>> А вот пакеты для nodejs, использующие нативные библиотеки, паковать 
>> нужно обязательно, иначе невозможно обеспечить сборку бинарной части 
>> такого пакета.
> 
> Что имеется ввиду под "нативные"? библиотеки на c/c++ ?
Да.

> Если да, то почему в качестве пример выбран node-webpack, в нем нет
> бинарных библиотек.
Обновлю примеры. У меня пока не было хороших примеров :)

> 2) Как использовать эти пакеты (sass, node-gyp) при сборке своих 
> пакетов?
> Я пока другого способа, как в %prep сделать симлинки, не придумал:
> %prep
> %setup -q
> %patch -p1
> ln -sf %nodejs_sitelib/node-gyp node_modules/node-gyp
> ln -sf %nodejs_sitelib/node-sass node_modules/node-sass
> ln -sf %nodejs_sitelib/npm node_modules/npm
Зависит от того, как они используются. В идеале лучше не делать ссылки.

> Получается не совсем удобная схема.
> Вот собираю я grafana.
> запустил в своём бранче
> yarn install --pure-lockfile
> в получившемся node_modules поудалял node-sass, node-gyp, что бы потом
> в %prep сделать симлинки на  системные.
> Может есть рекомендации, как это сделать лучше?
Я предлагаю собирать любым способом, чтобы стало понятно, как этом можно 
сделать удобно.

Из изложенного такие выводы:
1. не должны требоваться симлинки в node_modules, node и так отлично 
загрузит эти модули, а скрипты — запустят команды (node-gyp и npm)
2. удаление ненужных модулей сделать важно, а в случае, если там 
бинарники — и необходимо


-- 
С уважением,
Виталий Липатов,
ALT Linux Team


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-03-03 17:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-02-27 21:27 [devel] Policy по упаковке модулей Node.js Vitaly Lipatov
2020-02-28  3:46 ` Anton Farygin
2020-02-28  7:15   ` Ivan A. Melnikov
2020-02-28  8:33 ` Скрылевъ Малъ
2020-03-03 17:01 ` Alexey Shabalin
2020-03-03 17:37   ` Vitaly Lipatov

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git