Как `CI = true` влияет на команду` npm install`? - PullRequest
1 голос
/ 19 июня 2020

У меня проблемы с поиском хорошей документации о том, как CI=true влияет на команду npm install.

Чем CI=true npm install отличается от npm install. Влияет ли CI=true на установку?

Я пробовал его локально, и НЕ приводит к тому, что он ведет себя как npm ci. Я пробовал запустить его без файла package-lock.json или npm-shrinkwrap.json. Он создал файл блокировки.

Кроме того, есть ли разница между

CI=true npm install

и

CI=true 
npm install

и

export CI=true 
npm install

1 Ответ

1 голос
/ 21 июня 2020

Установка переменной среды CI на true влияет на то, как npm собирает данные об использовании.

Как это влияет npm объясняется в Отправляет ли npm какую-либо информацию о меня обратно в реестр раздел документации (для удобства я предоставил дословную копию этого раздела ниже) . В частности, обратите внимание на описание заголовка Npm-In-CI.

Таким образом, установка CI=true заставляет npm установить заголовок Npm-In-CI на true, таким образом, в результате собранные данные (npm) предполагает, что пакеты устанавливаются через «ферму сборки» (т.е. для C непрерывно I в целях интеграции), вместо этого "человека" .

В документации по вышеупомянутой ссылке указано следующее:

Отправляет ли npm какие-либо информация обо мне обратно в реестр?

Да.

При запросах реестра npm добавляет два заголовка с информацией о вашем окружении:

  • Npm-Scope - Если ваш проект ограничен, этот заголовок будет содержать его объем. В будущем npm надеется создать функции реестра, которые будут использовать эту информацию, чтобы вы могли настроить свой опыт для вашей организации.
  • Npm-In-CI - Установите значение «true», если npm считает, что эта установка выполняется в среде непрерывной интеграции, в противном случае - «false». Это обнаруживается путем поиска следующих переменных среды: CI, TDDIUM, JENKINS_URL, bamboo.buildKey. Если вы хотите узнать больше, вы можете найти оригинальный PR интересным. Это используется для сбора более точных показателей того, как npm используется людьми, по сравнению со строительными фермами.

Что касается конкретной c части вашего вопроса, например,

Влияет ли CI=true на установку?

Обычно " Нет ", есть нет заметное отличие от результирующей установки npm с или без CI=true.

Однако возможный сценарий, при котором установка пакета выполняется npm может / может быть выполнено, если автор пакета определил сценарий postinstall в пакете. json, который выполнял разные условные логические операции c if / когда CI переменная среды установлена ​​на true.

Что касается последней части вашего вопроса, т.е.

Кроме того, есть ли разница между ...

Принятый ответ на этот вопрос обращается к этому.

В итоге;

  • Ваши первые две команды похожи - они обе устанавливают переменную среды только для текущей оболочки.
  • Однако ваш последний пример, в котором используется export, устанавливает переменную среды для текущей оболочки и всех процессов, запущенных из текущей оболочки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...