ykn*_*121 3 version-control node.js node-modules package.json react-native
最近在做react-native项目。我已经完成了一个旧项目,我想将其克隆到一个新项目中,以便我可以在旧版本之上开发新的东西,但不会影响旧项目本身。
我发现,每次使用npm install相同的 package.json 时,node_modules安装的文件夹可能不一样。这可能是因为我们在某些模块版本前面有前缀^或。~此外,安装的模块也有自己的依赖项,可以自行更新。
所以,就说到了问题所在。我应该使用 package.json 进行版本控制吗?
根据这里:Why do we need to use package.json? , 它说package.json provides a simple way for people to keep track of packages they use in their application.
package.json但是,如果总是自己更新项目而不关心不同模块的兼容性,我如何对我的项目进行版本控制呢?
我想到的唯一解决方案是:我们应该对node_modules进行版本控制。如果是这样的话,package.json 就变得毫无意义了吗?
那么,我想知道对相关项目进行版本控制的行业实践是怎样node_modules的package.json?
如果您使用的是 5 之前的 NPM 版本,那么您应该查看NPM Shrinkwrap。这会锁定您当前使用的 NPM 模块的版本。一旦提交到该项目,如果其他人npm install他们会得到收缩包装中指定的确切版本。
npm-shrinkwrap
锁定发布的依赖版本
随着NPM 5的发布,当您默认运行时,它会自动创建一个package-lock.json文件,类似于 ShrinkWrap 。npm install您应该将 lock 或 shinkwrap 文件提交到 SCM。
您还应该研究Yarn。Yarn 开箱即用,带有一个yarn.lock文件,其工作方式相同,但具有额外的性能速度和离线功能。
使用详细而简洁的锁定文件格式和确定性的安装算法,Yarn 能够保证在一个系统上运行的安装在任何其他系统上的运行方式完全相同。
如果您已经有一个项目和node_modules文件夹,并且希望更改为 Yarn 而无需再次安装所有模块,那么您可以运行yarn import它将根据当前节点模块文件夹生成一个锁定文件。
上述两种解决方案都意味着您不需要将自己添加node_modules到 SCM - 当不同平台(Windows、Mac 等)上的用户处理项目时,这样做会增加其他复杂性。锁定文件应与您的项目一起提交。
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |