Ric*_*iel 3 node.js npm semantic-versioning package.json
保存 package.json 依赖项时的最佳做法是什么?
例如,我看到很多依赖项不是固定的,例如:
"tslint": "~5.11.0"
Run Code Online (Sandbox Code Playgroud)
我希望有固定的依赖项,以便将来新开发人员加入团队时不会改变。
我对 package-lock.json 和 shrinkwrap 知之甚少,但我不确定这方面的“最佳实践”。在这种情况下是一个 Angular 应用程序,但它可以是一切。例如,将 package-lock.json 放在 repo 上会导致过去出现一些问题(我知道!推送它是最佳实践!)
有什么想法吗?
简短回答:插入符号 ( ^) 并提交您package-lock.json的可能是您最好的方法。这可确保开发人员始终获得相同的依赖项,并且最不令人惊讶。
package-lock.json?npm 特别建议您提交package-lock.json.
强烈建议您将生成的包锁提交到源代码控制:这将允许您团队中的任何其他人、您的部署、您的 CI/持续集成以及在您的包源中运行 npm install 的任何其他人获得完全相同的依赖关系树你正在开发的。
(来自npm 文档)
您提到推package-lock.json送到您的存储库在过去导致了一些问题。我猜这是由于这个问题,每次有人安装任何东西时,包锁都会被忽略和重写。根据此答案,这不是正确的行为,已在 npm@5.4.2 中修复。
你应该不会做的就是离开了package-lock.json,只是指定你的确切版本package.json。如果您这样做,您的顶级依赖项将看起来不错且一致,但它们的依赖项不会锁定版本。这样,您遇到错误的可能性几乎一样,但会更难找到。
npm-shrinkwrap.json呢?您还提到了shrinkwrap 文件。收缩包装文件适用于
通过注册表上的发布过程部署的应用程序
(来自npm 文档)
您可能没有使用npm publishangular webapp,因此没有理由使用npm-shrinkwrap.json.
我找不到任何说明插入符号 ( ^) 范围是最佳实践的文档,但我相信它们是。
npm 使插入符范围成为默认选项,所以很明显他们认为这是最佳实践,尽管我找不到他们的任何文档来证明它的合理性。
使用默认值是最不令人惊讶的方法。如果我在 a 中看到任何其他类型的版本package.json,我会假设它被更改是有充分理由的,并且会在不知道是什么原因的情况下犹豫更新包,即使它确实需要更新。
如果您决定一次更新所有依赖项,插入符号范围将为您提供良好的服务。您的依赖项通常会被锁定,但删除您的依赖项package-lock.json并重新运行npm install将自动安装据称与您指定的版本向后兼容的最新版本(有关插入符号范围的详细信息,请参阅npm 文档)。
总之,使用插入符号范围和package-lock.json. 这满足了您对固定依赖项的要求,并提供了一些其他好处,因此最好按照标准进行操作,除非您找到其他更改原因。
| 归档时间: |
|
| 查看次数: |
567 次 |
| 最近记录: |