npm ciin的等效命令是什么pnpm?
根据文档npm install:
pnpm install用于安装项目的所有依赖项。在 CI 环境中,如果存在锁定文件但需要更新,则安装会失败。
“CI环境”是如何定义的?
以下是什么意思?依赖项可以更新,但
pnpm-lock.yaml没有触及?
pnpm i --frozen-lockfile# pnpm-lock.yaml没有更新
我是 npm 的新手,正在尝试了解重新创建node_modules部署目录的工作原理。
我们使用npm ci而不是npm install确保在部署期间干净利落。但是,当我们在没有任何标志的情况下运行它时,我们会收到以下错误:
修复上游依赖冲突,或使用 --force 或 --legacy-peer-deps 重试此命令以接受不正确(并且可能已损坏)的依赖解析。
该文件为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听起来它在安装过程中总是会跳过对等依赖项(无论是什么),即使没有问题。
这两个标志有什么区别,我们什么时候应该使用它们?
我正在尝试为新开发人员在他们的本地开发环境中安装我们的代码库整理文档。我想给他们以下命令:
“npm ci”几乎完全符合我的要求,但似乎没有安装 devDependencies。“npm install”确实会安装 devDependencies,但它有时会修改 package-lock.json。
我可以想象一些像“npm install && git checkout package-lock.json”这样的问题,但我觉得必须有一种更惯用的方式来表达“给我一个干净安装这个项目的开发依赖项?”
我怎么能跳过从安装可选的依赖package-lock.json通过npm ci?
我有 git 操作来运行 prettier(代码格式化程序)。下面是format.ymlgit操作的文件。
name: Format code with prettier
on:
push:
branches-ignore:
- master
jobs:
format:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
# Install NPM dependencies, cache them correctly
- name: Run prettier
run: |
npm ci
npm run prettier-check
Run Code Online (Sandbox Code Playgroud)
下面列出了我收到的错误。
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old …Run Code Online (Sandbox Code Playgroud) Given a project where the package-lock.json is managed in source control with the goal that all developers on the team get exactly the same dependencies.
From the documentation of npm I think developers should use npm ci to set up their development environment and probably also later when dependencies are updated.
However the instructions I see in typical npm projects is still to use npm install.
Is there a reason developers should use npm install instead of npm ci …
这里https://github.blog/2021-02-02-npm-7-is-now-generally-available/ 说:
锁文件 v2 解锁了进行确定性和可重复构建以生成包树的能力。
但我想知道这是 npm 7 现在的默认行为吗?也就是说,如果有一个package-lock.json将使用不精确的版本(例如from)npm install更新最顶层的软件包,或者它将始终以与以前相同的方式工作?^1.0.0package.jsonyarn
如果npm install现在是确定性的,如果我说这npm ci基本上相当于
rm -rf node_modules && npm install
Run Code Online (Sandbox Code Playgroud)
一些额外的检查?
我正在尝试使用命令从 docker 文件安装依赖项RUN npm ci。但我收到以下错误Conflicting peer dependencies. Fix the upstream dependency conflict, or retry this command with --force, or --legacy-peer-deps to accept an incorrect (and potentially broken) dependency resolution.。在我的本地项目中,我在运行时克服了这个问题npm install --force。在构建和运行此命令时,如何在 Docker 内部修复此问题RUN npm ci。
据我了解,npm ci 会从 package-lock.json 或 npm-shrinkwrap.json 中查找。但仍然面临这个问题。无法弄清楚是什么原因造成的。
我有一个天真的问题:在 npm ci 之后进行 npm prune 是否有兴趣?对我来说 npm ci 似乎就足够了,不是吗?
提前致谢
npm ×10
npm-ci ×10
npm-install ×7
node.js ×2
docker ×1
github ×1
javascript ×1
node-modules ×1
pnpm ×1