npm - 在 Git LFS 中跟踪包锁定文件(例如 NPM 的 package-lock.json)是一个好主意吗?
问题描述
我注意到package-lock.json
我们的一个项目中 NPM 生成的文件大小约为 550 KiB。同样,packages.lock.json
NuGet 生成的文件约为 100 KiB,并且可能会增长。
我对保持我们的 Git 存储库紧凑感兴趣,所以我想知道:由于这些文件经常更改并且相对较大,在 Git LFS 中跟踪它们是否有意义?
我意识到如果在 Git LFS 中跟踪更改,Git 将无法自动合并更改,但一般来说,锁定文件不是很容易重新生成吗?
解决方案
锁定文件很容易重新生成。这并不意味着您应该重新生成它们。包锁将告诉您在该提交中使用了每个依赖项的确切版本。这可以让其他贡献者(和您自己)使用完全相同的依赖项重建您的项目,从而避免在更新的依赖项引入错误时带来很多麻烦。您应该将 package-lock 视为项目的配置文件并将其保存在代码中。
至于将其保存在 git lfs 上,请知道虽然包锁定文件确实经常更改,但它们的内容是像代码一样格式化的纯文本,这正是 git 为存储/检索而优化的内容类型。例如,git 不会单独存储每个文件,而是可以跨提交重用的包锁块。
总而言之,我不会太担心 package-lock 对你的 repo 的性能影响。当然,会有一些,但它是一个重要的配置文件,提交它的好处大于缺点。这样想:如果你的项目有很多代码,这会影响你的 git repo 性能吗?是的。这是否意味着您不应该提交该代码?当然不是——这就是使用 git 的全部意义所在。
推荐阅读
- angular - Angular:急切加载使组件不被渲染
- python - 如何在 Python 3 的 Plotly 中将其悬停在折线图中一次显示数据点及其标签?
- angular - 如何仅从 json 响应中获取一些信息?
- python - Python Flask Server 生成太多新线程
- ios - 如何使用 RxSwift 让 ViewController 观察 ViewModel 变量(Variable<..>)的任何变化?
- visual-studio - 片段快捷方式未在智能感知中显示
- c# - Razor 模型绑定不发送所有元素
- paypal - 如何使用计费协议收取首次付款?
- aws-lambda - 如何在 Redshift 上执行 sql 文件
- android - 使用 TransferUtility 上传文件时动态提供 awsconfiguration