我有一个部署过程,我将代码检入git存储库,并通过Web钩子在生产服务器上运行部署脚本。在该服务器上,我使用ssh和.pem密钥连接到git,从git,npm install,构建webpack并重新启动服务进程。
我从不打算从prod服务器提交任何东西 - 它们应该能够自动部署。但是,这不起作用,因为package-lock.json
文件在我运行npm install
时经常更新,因此下次部署时,git pull
步骤失败,说我与现有文件冲突package-lock.json
文件,因为它有未提交的更改。
我目前的解决方案是.gitignore package-lock.json文件。但这违背了它的目的,提供与我的开发机器上相同的构建。
处理package-lock.json
的正确方法是什么?
答案 0 :(得分:1)
有一个helpful StackOverflow Question/Answer about why your package.lock is changing。最接近最有用的答案似乎引用了NPM bug that's seeing much activity here in October 2017。
但目前,package.json
会覆盖package-lock.json
,这意味着如果您使用~2.1
并且该软件包的版本为2.2,那么您的生产部署将会升级。
假设你不是来自未来,这里有两个不同的想法:
npm install --no-save
...但没有解决锁定文件被忽略的问题,但我认为会使package-lock.json
无法更新。