`CI=true` 如何影响 `npm install` 命令?

Scr*_*Dev 11 node.js npm

我无法找到有关命令如何CI=true影响的良好文档npm install

与有何CI=true npm install不同npm install。甚至会CI=true影响安装吗?

我在本地尝试过,它不会导致它的行为像npm ci. package-lock.json我尝试在没有或文件存在的情况下运行它npm-shrinkwrap.json。它创建了锁定文件。

另外,两者之间有区别吗

CI=true npm install
Run Code Online (Sandbox Code Playgroud)

CI=true 
npm install
Run Code Online (Sandbox Code Playgroud)

export CI=true 
npm install
Run Code Online (Sandbox Code Playgroud)

Rob*_*obC 12

CI环境变量设置为true影响 npm 收集使用数据的方式。

\n

文档的“npm 是否将有关我的任何信息发送回注册表”部分解释了它如何影响 npm (为了方便起见,我在下面提供了该部分的逐字副本)。特别考虑有关的描述Npm-In-CI

\n

总之,设置CI=true会导致 npm 将标头设置Npm-In-CItrue,因此(由 npm )收集的数据假设软件包是通过“构建场”安装的(即用于持续集成目的),而不是一个“人”的的。

\n

以下是上述链接的文档中的说明:

\n
\n

npm 是否会将有关我的任何信息发送回注册表?

\n

是的。

\n

当向注册表发出请求时,npm 会添加两个标头,其中包含有关您的环境的信息:

\n
    \n
  • Npm-Scope\xe2\x80\x93 如果您的项目有范围,则此标头将包含其范围。将来,npm 希望构建使用此信息的注册表功能,以便您可以为您的组织定制体验。
  • \n
  • Npm-In-CI\xe2\x80\x93 如果 npm 认为此安装在持续集成环境中运行,则设置为 \xe2\x80\x9ctrue\xe2\x80\x9d,否则设置为 \xe2\x80\x9cfalse\xe2\x80\x9d。这是通过查找以下环境变量来检测的:CITDDIUMJENKINS_URLbamboo.buildKey。如果您\xe2\x80\x99d想了解更多信息,您可以找到原始PR很有趣。这用于收集关于人类如何使用 npm 而不是构建农场的更好指标。
  • \n
\n
\n
\n

关于你问题的具体部分,即

\n
\n

是否CI=true影响安装吗?

\n
\n

一般来说“否”,无论是否使用npm,结果安装没有显着差异CI=true显着差异。

\n

但是,可能会影响 npm 安装软件包的情况,即软件包作者postinstallpackage.json中定义了一个脚本,如果/当CI环境变量设置为true时,该脚本执行不同的条件逻辑。

\n
\n

关于你问题的最后一部分,即

\n
\n

另外,这两者之间有区别吗?...

\n
\n

这个问题的公认答案解决了这个问题。

\n

总之;

\n
    \n
  • 前两个命令是相似的 - 它们都仅为当前 shell 设置环境变量。
  • \n
  • 然而你的最后一个例子利用export设置当前 shell 的环境变量以及从当前 shell 启动的所有进程。
  • \n
\n