Недавно я работал над проектом, который требует приватных модулей npm . Проблема, с которой я столкнулся, была: когда Travis запускал тесты, которые зависели от модулей @scoped, он терпел неудачу:
npm ERR! 404 Not found : @remy/super-awesome-private-mod
Этот пост исправляет эту проблему (и в основном здесь, когда я забываю, я могу «гуглить себя»!).
1. Захватите свой токен
Если вы используете семантическую версию cli (что и должно быть, это круто), то вы уже будете иметь NPM_TOKEN
значение среды в Travis.
Если нет, вам нужно найти свой токен npm. Это находится в вашем домашнем каталоге, в .npmrc
файле. Маркер это все после _authToken=
. Ваш файл должен содержать такую строку:
//registry.npmjs.org/:_authToken=00000000-0000-0000-0000-000000000000
Обратите внимание, что там, где я поставил нули, вы увидите буквы и цифры. После того, как вы скопировали токен, вам нужно будет создать новое значение env в настройках Travis (на отдельных страницах сборки):
Затем в разделе «Значения среды» добавьте новое значение (оставьте «отображать значение в журнале сборки» выключенным)
NPM_TOKEN = 00000000-0000-0000-0000-000000000000
Затем нажмите «добавить».
2. npmrc
У вас есть два варианта здесь. Первый вариант — динамически создать .npmrc
( больше о npmrc ) в .travis.yml
настройке. Второй вариант — добавить файл в репозиторий, но это также требует изменения среды вашей оболочки. Я покрою оба.
Обратите внимание, что если вы измените свой пароль npm, вам нужно будет обновить его NPM_TOKEN
, иначе его не нужно будет менять в будущем.
динамический
По вашему .travis.yml
вы создадите .npmrc
файл на лету. Вам нужно будет сделать это в before_install
разделе, согласно:
before_install:
- echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc
Обратите внимание, что побег \$
важен. Это гарантирует, что ваш личный токен npm не будет отражен в ваших журналах Travis. Вот и все. С этим методом вы готовы.
Мне лично нравится этот метод, потому что он хранит .npmrc
файл вне моего репозитория git, и это означает, что мне не нужно забывать возиться с переменными окружения моей оболочки, как мы увидим дальше.
На основе файлов
Создайте .npmrc
файл и поместите его в корень каталога, в котором будет работать Travis (то есть обычно в корень git-репо).
Файл должен содержать (как минимум) это:
//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Теперь добавьте это в свой репозиторий и дайте Трэвису запустить его тест. Теперь у Трэвиса будет доступ к установке ваших приватных пакетов npm.
Теперь ваша сборка будет работать, но npm install
не будет работать локально, пока вы не добавите NPM_TOKEN=00000...
переменные окружения вашей локальной оболочки.
Возможно, вам придется настроить эти направления в зависимости от вашей оболочки, но если вы используете bash, добавьте следующую строку в ваш .bash_profile
и после запуска source ~/.bash_profile
:
export NPM_TOKEN="00000000-0000-0000-0000-000000000000"
Недостатком этого метода (после того, как вы отсортировали оболочку) является то, что если вы работаете в команде, каждый член команды должен будет также добавить эту строку в свою оболочку, как .npmrc
файл в корне каталога вашего проекта. потребуется действительный токен.
Теперь ваши частные модули будут установлены в Travis. Если вам это нужно в такой среде, как Heroku, я нашел эту статью очень полезной (и основу этого поста).