Как совместно использовать модули npm компании внутри
Предположим, вы только что написали замечательный модуль node, который хотите разбить на пакет, чтобы его можно было использовать повторно. Проблема в том, что он содержит некоторые сверхсекретные материалы компании, которыми нельзя поделиться, и вы не можете или не хотите создавать частную организацию npm. Так что же вы делаете сейчас?
Вы не поверите, но если вы используете частные репозитории git, то у вас уже есть все, что вам нужно.
Установка пакетов из git
Установить пакеты с помощью git на самом деле очень просто, если вы используете github, gitlab, bitbucket. npm install
просто требуется специальное имя пакета для установки из git. Формат - SERVICE:user/repo
.
Итак, если ваше имя пользователя stan
и вы пытаетесь установить репозиторий willzyx
из gitlab, выполните следующую команду:
npm install gitlab:stan/willzyx
А как насчет версий?
Чтобы установить определенный тег или ветку, добавьте #NAME
в конец имени пакета. Если вы используете npm version
для обновления версии пакета, вы можете добавить #semver:^1.0
, чтобы установить последнюю версию 1.x.
А как насчет сложных пакетов?
Конечно, это отлично подходит для старых пакетов javascript, но что, если вы используете что-то необычное, например Typescript? Как собрать пакет, не проверяя артефакты сборки в репо?
В разделе scripts
package.json
есть несколько специальных сценариев, которые запускаются как часть определенных команд npm. Вы хотите определить prepare
. Этот сценарий запускается после установки пакета.
Чтобы продолжить пример машинописного текста, вы можете использовать следующий сценарий подготовки:
"prepare": "node_modules/.bin/tsc"
Любые зависимости разработки будут установлены до запуска сценария и очищены после.
Теперь, когда он построен, как мне очистить его?
Это тоже довольно просто, если вы используете git. Так же, как в git есть файл .gitignore
, в npm есть файл .npmignore
. .npmignore
имеет тот же формат и применяется после завершения сценария подготовки. Это означает, что вы можете добавить исходный каталог в .npmignore
, и он волшебным образом исчезнет после установки пакета.
Надеюсь, эта статья подтолкнула вас к созданию собственных пакетов. Если у вас есть другие советы, которые я, возможно, пропустил, поделитесь ими со мной в комментариях или в твиттере.
использованная литература
Первоначально опубликовано на https://justwriteapps.com.