Node.js Policy: различия между версиями
Нет описания правки |
Нет описания правки |
||
Строка 2: | Строка 2: | ||
{{DraftPolicy|responsible=lav}} | {{DraftPolicy|responsible=lav}} | ||
=== Какие модули сто́ит паковать === | |||
* | * Важно учитывать, что модулей для node (npm-пакетов) многие тысячи, и никакого смысла собирать в репозиторий в виде rpm-пакетов их нет, тем более невозможно учесть разницу в версиях.'' | ||
* Необходимо собирать в пакеты только те модули, которые требуют компиляции (с системными библиотеками), а также модули, которые являются программами в /usr/bin (например, npm, yarn, sass, node-gyp и подобное).`` | |||
Все пакеты npmjs паковать в rpm было бы неправильно, потому что они уже суть упакованные модули для nodejs. | |||
А вот пакеты для nodejs, использующие нативные библиотеки, | |||
паковать нужно обязательно, иначе невозможно обеспечить сборку бинарной части такого пакета. | |||
=== Название пакета === | |||
Название пакета с модулем для node: nodejs-<имя>.<ref>Интересно, что в Fedora node упакован в пакет node, а модули — в пакеты nodejs-*. А в Ubuntu наоборот, node в пакете nodejs, а модули в пакетах node-*.</ref>. | |||
Префикс rpm-пакета должен определяться не хранилищем, где располагается пакет npmjs, а местом, куда | |||
пакет будет положен в файловой системе (местом поиска — откуда будут взяты его файлы, если угодно). | |||
И ассоциироваться такой префикс должен не с хранилищем (то есть с сайтом, который и поменяться может), | |||
а с названием экосистемы для пакетов, среды их исполнения. | |||
Традиционно принято в качестве префикса использовать название языка. Так в репозитории Сизиф есть пакеты erlang-*, python-*, perl-*, ruby-*, php-* java-*. | |||
Возможно кому-то показалось, что это названия языков, на которых написаны модули. Нет, зачастую такие модули написаны | |||
на C, а не на php. И префикс имени пакета для языковых систем показывает, расширение | |||
какого языка поставляет этот пакет. | |||
=== Использование макросов === | |||
При сборке пакетов для node следует использовать макросы из пакета {{pkg|rpm-macros-nodejs}}. | |||
=== Размещение модуля в иерархии файловой системы === | === Размещение модуля в иерархии файловой системы === |
Версия от 18:39, 18 февраля 2020
Policy по упаковке модулей nodejs
Какие модули сто́ит паковать
- Важно учитывать, что модулей для node (npm-пакетов) многие тысячи, и никакого смысла собирать в репозиторий в виде rpm-пакетов их нет, тем более невозможно учесть разницу в версиях.
- Необходимо собирать в пакеты только те модули, которые требуют компиляции (с системными библиотеками), а также модули, которые являются программами в /usr/bin (например, npm, yarn, sass, node-gyp и подобное).``
Все пакеты npmjs паковать в rpm было бы неправильно, потому что они уже суть упакованные модули для nodejs. А вот пакеты для nodejs, использующие нативные библиотеки, паковать нужно обязательно, иначе невозможно обеспечить сборку бинарной части такого пакета.
Название пакета
Название пакета с модулем для node: nodejs-<имя>.[1].
Префикс rpm-пакета должен определяться не хранилищем, где располагается пакет npmjs, а местом, куда пакет будет положен в файловой системе (местом поиска — откуда будут взяты его файлы, если угодно).
И ассоциироваться такой префикс должен не с хранилищем (то есть с сайтом, который и поменяться может), а с названием экосистемы для пакетов, среды их исполнения.
Традиционно принято в качестве префикса использовать название языка. Так в репозитории Сизиф есть пакеты erlang-*, python-*, perl-*, ruby-*, php-* java-*. Возможно кому-то показалось, что это названия языков, на которых написаны модули. Нет, зачастую такие модули написаны на C, а не на php. И префикс имени пакета для языковых систем показывает, расширение какого языка поставляет этот пакет.
Использование макросов
При сборке пакетов для node следует использовать макросы из пакета rpm-macros-nodejs.
Размещение модуля в иерархии файловой системы
- %nodejs_sitelib/<имя> — размещение модуля <имя>.
В каталоге с модулем не должно быть архитектурно-зависимых библиотек, всегда должны использоваться системные.
Макросы из rpm-macros-nodejs
- %nodejs_sitelib — каталог для размещения модулей.
- %nodejs_arches — список архитектур, на которых поддерживается nodejs.
Пример
Пример пакета с модулем можно посмотреть здесь:
- ↑ Интересно, что в Fedora node упакован в пакет node, а модули — в пакеты nodejs-*. А в Ubuntu наоборот, node в пакете nodejs, а модули в пакетах node-*.