问题标签 [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.
npm - 当 npm install/ci 尊重 package-lock.json 时,在 package.json 中使用 tilde(~) 和 caret(^) 有什么目的吗?
如果应用程序具有 package-lock.json 或 shripkwrap.json,则 npm install/npm ci 命令都将遵循依赖项版本(在 package-lock.json 或 shripkwrap.json 中),波浪号(~)和插入符号的用途是什么(^) 在 package.json 中服务?
node.js - npm:何时使用 `--force` 和 `--legacy-peer-deps`
我是 npm 的新手,正在尝试了解重新创建node_modules
目录以进行部署的工作原理。
我们使用npm ci
而不是npm install
确保在部署期间保持干净的状态。但是,当我们在没有任何标志的情况下运行它时,我们会收到以下错误:
修复上游依赖冲突,或使用 --force 或 --legacy-peer-deps 重试此命令以接受不正确(并且可能损坏)的依赖解析。
for的文档如下(页面npm install
上没有标志):--force
npm ci
-f 或 --force 参数将强制 npm 获取远程资源,即使磁盘上存在本地副本。
同时,文档--legacy-peer-deps
说:
--legacy-peer-deps:安装时忽略所有 peerDependencies,采用 npm 版本 4 到版本 6 的样式。
似乎这两个标志都可以毫无问题地npm ci
生成目录,但我仍然不清楚两者之间的区别。node_modules
据我了解,--force
听起来它将是在最后一个依赖下载的基础上,并将覆盖任何以前下载的依赖项。同时,--legacy-peer-deps
听起来它在安装过程中总是会跳过对等依赖项(无论是什么),即使没有问题。
这两个标志有什么区别,我们应该什么时候使用它们?
node.js - Gitlab CI - 缓存 Node.js 依赖项
我在尝试重用npm ci
在作业之间安装的软件包时遇到了重大问题。我一直在关注此文档:https://docs.gitlab.com/ee/ci/caching/#cache-nodejs-dependencies,但无论如何都会在每个步骤中重新安装软件包:
这是我的yaml。这些文件位于名为frontend
.
非常感谢一些帮助!
node.js - 绕过 NPM 缓存,如果我要查找的模块不存在
在使用 NPM 及其缓存时,我注意到 - 有时 - 当某个包的最新版本不在缓存中时,会npm ci
在不绕过 NPM 缓存的情况下出错。
有没有办法告诉 NPM 类似“如果您要查找的包不在缓存中,则绕过缓存并重试”?
提前致谢。
node.js - NPM 审计未发现漏洞
我有一个 CI 服务,它npm audit
在每个构建上运行,并在存在高风险漏洞时发出通知。奇怪的是,当我在npm audit
本地运行时 CI 报告高漏洞时,它说found 0 vulnerabilities
。过几天就会发现问题...
CI 和本地都使用 Node15.12.0
和 npm 7.6.3
。
为什么npm audit
找不到最新的问题?有什么方法可以强制更新它吗?
npm --verbose audit
输出:
npm - “npm install”在 npm 7 中是否成为确定性的?
这里https://github.blog/2021-02-02-npm-7-is-now-generally-available/ 说:
lockfile v2 解锁了执行确定性和可重复构建以生成包树的能力。
但我想知道它现在是 npm 7 的默认行为吗?也就是说,如果有一个package-lock.json
将npm install
使用不精确的版本更新最顶层的包,比如^1.0.0
frompackage.json
或者它总是会以同样的方式工作yarn
?
如果npm install
现在是确定性的,如果我说这npm ci
主要相当于
有一些额外的检查?
adonis.js - Adonis npm ci --production 挂起
部署 Adonis 项目时遇到问题,构建后,adonis 建议npm ci --production
在 build 文件夹中执行。在我这样做之后npm ci --production
,这个过程就挂起
npm - 我怎样才能解决'gyp ERR!堆栈错误:未找到:CI 服务器上的 make'
我的 .NET 和 react 项目在本地构建良好,但在 CI 服务器上,我收到以下错误。
我尝试了什么:
本地
- 跑到
git clean -xfd
删除node_modules
- 运行
npm install
生成新鲜package-lock.json
- 构建调用
npm ci
和npm run build..
这就是我调用反应项目构建的方式
Configuration
可以是Debug
or Release
,两者都可以在本地正常工作。
CI服务器
dotnet build
在目录上.sln
运行
其他信息:
make
我对我的文件没有依赖关系,package.json
也没有在我的机器上全局安装它,我可以通过运行来检查npm list -g --depth=0
我遇到了 github 上报告的一些问题,这表明原因可能是其他包cwd /azp/agent/_work/22/s/projectfolder/ui-components/node_modules/dtrace-provider
,但对我的情况没有帮助。
我有一些日志,例如Skipping 'fsevents' build as platform linux is not supported
我已经在这里呆了几天了,不知道接下来要尝试什么。
firebase - 使用 GitHub 操作在 Firebase 主机上自动部署 Vue-CLI 项目
所以我有我的 Vue-CLI 项目,但我无法管理自动部署。
我整天都在谷歌搜索,我从那里得到了密钥,firebase login:ci
但我不明白我应该把它放在yaml
文件中的什么地方。
我确实将 FIREBASE_TOKEN 作为环境变量添加到我的 github 存储库中,但问题仍然存在。即使 firebase 文档说Option 1: Store the token as the environment variable FIREBASE_TOKEN. Your system will automatically use the token.
这是我的YAML
文件,由 firebase-CLI 生成。
我可以对我的存储库进行克隆、推送、获取、创建、删除和做任何我想做的事情。手动部署工作得很好。
自动部署(在另一个 repo 上,我在那里使用 Nuxt.js)开箱即用。
为什么我在使用 Vue-CLI 时遇到这么多麻烦?.. 以及如何解决这个问题?
UPD:这是输出,git ls-remote -h -t ssh://git@github.com/mattboldt/typed.js.git
执行此命令时似乎没有错误。现在我更加困惑......我什至不知道问题出在哪里......我也确实对另一个 repo (Nuxt.js) 进行了更改,并且自动部署确实在那里工作。我还确保 Nuxt.js 项目和 Vue-CLI 之间的 Firebase 服务帐户是 100% 相同的。它仍然不起作用。
npm - npm ci 的 pnpm 等效命令
npm ci
in的等效命令是pnpm
什么?
根据以下文档npm install
:
pnpm install
用于安装项目的所有依赖项。在 CI 环境中,如果存在锁定文件但需要更新,则安装会失败。
“CI 环境”是如何定义的?
以下是什么意思?可以更新依赖关系,但
pnpm-lock.yaml
没有触及?
pnpm i --frozen-lockfile
# pnpm-lock.yaml
没有更新