npm 如何通过 package.json 安装依赖最新版

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了npm 如何通过 package.json 安装依赖最新版相关的知识,希望对你有一定的参考价值。

参考技术A 一个node package有两种依赖,一种是dependencies一种是devDependencies,其中前者依赖的项该是正常运行该包时所需要的依赖项,而后者则是开发的时候需要的依赖项,像一些进行单元测试之类的包。 如果你将包下载下来在包的根目录里运行 npm install 默认会安装两种依赖,如果你只是单纯的使用这个包而不需要进行一些改动测试之类的,可以使用 npm install --production 只安装dependencies而不安装devDependencies。 如果你是通过以下命令进行安装 npm install packagename 那么只会安装dependencies,如果想要安装devDependencies,需要输入 npm install packagename --dev

当 package.json 和 yarn.lock 不同步时,如何让纱线安装失败?

【中文标题】当 package.json 和 yarn.lock 不同步时,如何让纱线安装失败?【英文标题】:How to have yarn fail on yarn install when package.json and yarn.lock are out of sync? 【发布时间】:2018-01-18 18:39:30 【问题描述】:

在一个项目中,我用 yarn 替换了 npm 以获得它的好处,并且还强制我们的依赖项通过 yarn.lock 锁定。

现在,一位开发人员添加了一个带有 npm@4 的库,它只更改了package.json,当然没有更改yarn.lock

我原以为 yarn install 命令会在构建服务器上崩溃,但 yarn 有——对我来说出乎意料的行为——将这些库添加到最新版本中,然后在远程更新 yarn.lock

$ yarn install
[1/4] Resolving packages...
[2/4] Fetching packages...
warning fsevents@1.1.2: The platform "linux" is incompatible with this module.
info "fsevents@1.1.2" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Saved lockfile.
Done in 5.07s.

这与 yarn 的目的相矛盾,因为构建作业不会将 yarn.lock 推送回存储库,也不应该这样做。

我希望每个开发人员对他们签入的版本负责。

因此,如果package.jsonyarn.lock 不同步,有没有办法让yarn install 退出并显示错误代码?

【问题讨论】:

我打开了an issue on yarn's github repo 【参考方案1】:

你想要--frozen-lockfile参数:

$ yarn install --frozen-lockfile
yarn install v0.27.5
warning ../package.json: No license field
[1/4] Resolving packages...
error Your lockfile needs to be updated, but yarn was run with `--frozen-lockfile`.

最近docs for yarn install也明确了这一点:

yarn install

安装 package.json 中列出的所有依赖项 在本地 node_modules 文件夹中。

yarn.lock文件的使用方式如下:

如果存在 yarn.lock 并且足以满足所有依赖项 在 package.json 中列出,yarn.lock 中记录的确切版本是 已安装,并且 yarn.lock 将保持不变。纱线不会检查 较新的版本。 如果没有 yarn.lock,或者不足以满足 package.json 中列出的所有依赖项(例如,如果您 手动将依赖项添加到 package.json),Yarn 会查找最新的 满足 package.json 中约束的可用版本。这 结果被写入 yarn.lock。

如果要确保不更新yarn.lock,请使用--frozen-lockfile.

【讨论】:

以上是关于npm 如何通过 package.json 安装依赖最新版的主要内容,如果未能解决你的问题,请参考以下文章

node 通过指令创建一个package.json文件及npm安装package.json

通过 package.json 安装“全局”npm 依赖项 [重复]

如何获取package.json 然后通过npm去创建插件

通过终端检查 npm 包是不是安装在 package.json 中

NPM - 如何在不更新或添加 package.json 中描述的包的情况下安装新包

如何删除npm包