两台电脑都是 node10 的版本,不知道为什么,每次 npm install
,package-lock.json 都会有略微修改,比如:
"acorn": "4.0.13" -> "acorn": "^4.0.3"
难道是一台电脑是 Win7,一台是 Win10 的缘故。
之前一直都是把 package-lock.json
提交的,但是似乎也没什么用,能不能不要提交?
1
huijiewei 2018-10-31 17:06:03 +08:00
当然提交啊,依赖版本统一化
|
4
milklee 2018-10-31 17:08:48 +08:00
跟 npm 的版本有关,可以在两台电脑上运行 npm -v 看看版本是否一致。另外如楼上所说,另一台电脑可以用 npm ci 根据 package-lock.json 安装依赖。npm i 是根据 package.json 安装的
|
5
cstome OP |
7
milklee 2018-10-31 17:16:27 +08:00
不多余吧,npm ci 就不会改变 package-lock.json。拉别人的代码的时候会用 npm ci 初始化项目,加新依赖会用 npm i。如果其他人加过新依赖,也会用 npm ci 重新下载 node_modules
|
8
milklee 2018-10-31 17:18:20 +08:00
忘说了,踩过 npm 的无数坑之后,我已经换用 yarn 很久了...
|
9
will0404 2018-10-31 17:21:35 +08:00 1
如果你不知道为什么 npm i 会导致版本变化,那给你简单解释一下。
假设你依赖某个包 A,你的 package.json 里写的"A": "~1.0.1",那么当 A 有 patch update 的时候你再次 npm install,你装下来的就是新版,也许是 1.0.2。 同理,^对应包的 minor update,*对应 major update。 如果不明白我在说什么的话去看一下 semver: https://docs.npmjs.com/misc/semver 你要想依赖的版本永远不变,不随着包管理者的更新而更新,就把版本号写死,那就不需要 lock 文件了。 |
10
issiki 2018-11-22 14:36:53 +08:00
你可以看一下这个,虽然说的是 yarn,但道理是一样的 https://github.com/yarnpkg/yarn/issues/1583
|
11
charlie21 2022-10-03 14:34:14 +08:00
`yarn install --frozen-lockfile` 会根据 lock file 安装第三方包,这样呢 lock file 本身也不会被更新了
|