如果两个不同的开发人员在最初使用 package-lock.json
"lockfileVersion": 1
创建的项目中使用不同版本的 node (12⁄15) 和 npm (6⁄7) ,当开发人员使用npm 7x 安装新软件包似乎 package-lock.json
是使用 "lockfileVersion": 2
重新创建的。
这似乎会给使用 npm v6 的开发人员带来问题,因为它尝试使用 lockfileVersion 2
,但最终会产生新的差异。
npm WARN read-shrinkwrap 这个版本的 npm 兼容 lockfileVersion@1,但是 package-lock.json 是为 lockfileVersion@2 生成的。我会尽力做到最好的!
有没有办法指定新版本的 npm
只 使用 "lockfileVersion": 1
?还是我们只需要让所有开发人员使用相同版本的 npm
?
原文由 Ben 发布,翻译遵循 CC BY-SA 4.0 许可协议
我会建议你固定 Node/NPM 版本,并在你的环境(开发、登台和生产)中调整它。
您可以利用
nvm
通过添加到您的项目.nvmrc
文件来管理节点版本(不要忘记将其存储在您的源代码管理中)。例如,
.nvmrc
看起来像:然后,您可以使用
nvm install && nvm use
来使用 Node 的 pined 版本。NPM 还支持
engines
:When utilizing the
engines
field and makenpm
fail when the version constraints are unmet, setengine-strict=true
(since it isfalse
by default )在.npmrc
文件 中或作为npm_config_engine_strict=true
环境变量另一种方法是使用 Docker 容器 作为开发和执行的运行时环境,这意味着您既不需要安装 Node,也不需要安装 NPM。例如
如您所见,既没有 Node,也没有 NPM:
npm init -y
)由于上面的
docker run
命令很长,您可能希望利用 docker-compose 来简化工作流程。