Статьи

Использование TravisCI с частными зависимостями npm

Недавно я работал над проектом, который требует  приватных модулей 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, я нашел  эту  статью очень полезной (и основу этого поста).