问题标签 [npm-ci]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
849 浏览

npm - NPM ci 之后的 NPM 修剪

我有一个天真的问题:在 npm ci 之后做 npm prune 有兴趣吗?对我来说 npm ci 似乎就足够了,不是吗?

提前致谢

0 投票
7 回答
192373 浏览

npm - “npm install”和“npm ci”有什么区别?

我正在使用持续集成并发现了npm ci命令。

我不知道在我的工作流程中使用这个命令有什么好处。

它更快吗?它是否使测试更难,好吗?

0 投票
0 回答
3104 浏览

javascript - 使用“npm ci”而不是“npm install”进行确定性项目设置

给定一个在源代码控制中管理的项目,package-lock.json目标是团队中的所有开发人员都获得完全相同的依赖项。

从 npm 的文档中,我认为开发人员应该使用它npm ci来设置他们的开发环境,并且可能在以后更新依赖项时也应该使用它。

但是我在典型的 npm 项目中看到的说明仍然可以使用npm install

npm install开发人员应该使用而不是有理由npm ci吗?npm ci在这种情况下有缺点吗?

我知道这npm ci确实会删除整个node_modules内容,因此可能会重新下载一些已经存在的依赖项。

但是npm install我经常遇到这样的情况,即 annpm install实际上正在更改package-lock.json(请参阅下面的链接),这绝对不是传统项目设置中所期望的,其主要目标是所有开发人员都获得相同的环境。
因此,我想推荐使用npm ci.

“意外”行为的示例npm install

0 投票
4 回答
13725 浏览

npm - 如何跳过通过“npm ci”安装可选依赖项?

如何跳过安装可选依赖package-lock.jsonnpm ci

0 投票
2 回答
1206 浏览

bitbucket-pipelines - npm ci 不适用于 bitbucket 管道?

我有一个 react-native 项目,我正在尝试使用 bitbucket 管道来运行测试并导出到 expo。

为此,我尝试遵循本文,但失败并显示以下输出:

问题是,npm ci 在我的本地机器上正常工作。

我缺乏想法。有什么帮助吗?

0 投票
0 回答
2744 浏览

node.js - 构建 docker 映像时运行“npm ci”要慢得多

我尝试在三种不同的环境中npm ci使用相同的package.json和文件运行命令:package-lock.json

  • docker 主机 -大约需要 27 秒才能完成
  • 在 docker 容器内 -大约需要 32 秒才能完成
  • 在构建docker 映像期间 - 大约需要 163 秒才能完成

我想知道为什么在构建映像时安装软件包需要更多时间。构建映像时运行命令和在容器内手动运行命令有什么区别?也许这与 docker 在构建映像时使用的资源量(CPU、内存)有关?

我在所有三个环境中都使用相同的节点和 npm 版本。Docker 主机是具有 2 个虚拟 CPU 和 2GB 内存的 Windows Server 2019 VM。Docker 版本是18.09.2.

0 投票
0 回答
295 浏览

jenkins - Jenkins 并行管道中的 npm ci

我有一个具有大致以下结构(npm 模块)的 monorepo:

base模块中,我结合了我ui1ui2项目常用的所有东西。我使用 npm 本地路径将基本模块添加为 ui-projects 的依赖项。

到目前为止,一切都很好...

在我的 CI 环境(Jenkins)中,我npm ci用来安装依赖项。由于这些步骤是并行执行的,因此在尝试安装依赖项的同时调用node_modules也会删除 base 文件夹。这当然会导致随机错误......npm ciui1ui2

现在我的实际问题是:有没有办法告诉npm ci不要删除node_modules路径依赖项?当然,任何其他解决此类问题的提示也值得赞赏...... ;)

非常感谢你的帮助!

0 投票
2 回答
24871 浏览

npm - 有没有办法让“npm ci”安装 devDependencies,或者“npm install”不更新 package-lock.json?

我正在尝试为在本地开发环境中安装我们的代码库的新开发人员整理文档。我想给他们命令:

  • 根据 package-lock.json 中的版本安装 devDependencies 和依赖项
  • 不更新 package-lock.json

“npm ci”几乎完全符合我的要求,但似乎没有安装 devDependencies。“npm install” 确实安装了 devDependencies,但它有时会修改 package-lock.json。

我可以想象一些像“npm install && git checkout package-lock.json”这样的笨拙的东西,但我觉得必须有一种更惯用的方式来表达“给我一个干净安装这个项目的依赖项以进行开发?”

0 投票
0 回答
59 浏览

node.js - 使用 npm-cli 时如何部署持续运行的应用程序

我有一个较大的基于 nodejs 的 Web 应用程序,服务器和客户端组件一起工作。我目前正在部署该应用程序,但git pull用于从服务器存储库中获取我最新的生产分支。运行一个 gitpost-commit挂钩来执行npm install和重建服务器.env文件,PM2 正在使用 .env 文件中的更改来监视各种进程(3 个 Web 服务器)以重新启动它们。

node_modules 位于项目的最高级别,具有单独的服务器和客户端子目录。由于这是在快速局域网上使用 http2,因此我不会费心使用 web-pack 等压缩客户端文件,尽管我确实使用汇总lit-elementlit-html整理它们的导入语句(它们不是相对的或绝对的)已经嵌入其中。

我刚刚读到我真的应该npm ci为我的节点依赖项做一个,但是阅读说明它说它吹走了 node_modules 目录并重新开始(而npm install没有)。由于这一切都在树莓派上运行,因此它不是即时的。

我不确定 node_modules 的临时丢失是否会对正在运行的应用程序产生太大影响 - 毕竟我相信这些模块都将被缓存到内存中,但它可能没有,而且其中一台服务器也有可能倒塌并且pm2 重新启动它,所以我想知道....

那么这里的最佳实践是什么。例如,是否可以将package.json,复制package-lock.json到一个特殊的build子目录,在那里构建node_modules目录,然后将其移回原位。一旦建成。或者,还有更好的方法?

0 投票
0 回答
3048 浏览

node.js - 无法运行 npm ci

node.js - v12.16.2

npm - 6.14.4

操作系统 - Windows 10

当我运行时npm ci出现错误。

完整的错误日志:

尝试执行npm install等,在其他来源中找到,但每次都失败。