package.json的作用以及版本如何控制

669 阅读2分钟
1.package.json文件是对项目的描述文件,包括项目名称,项目所有人,项目地址,以及依赖版本,开发中我们常常会被版本折磨,掉进坑里,下面就是我的一个坑~

image.png

2.版本标识

  1. ~的意思是匹配最近的小版本,比如~1.2.3将会匹配所有的1.2.x版本,但不匹配1.3.0

  2. ^的意思是最近的一个大版本 比如^1.2.3 将会匹配 所有 1.x.x 包括1.3.0 但不包括2.0

提示:node的各种包都有版本控制,版本号用三个数字表示,分别用"."分割来标记每个版本,比如1.2.3 其中第三位3表示微小的变动,2表示比较大的变动,1表示升级

1.2.3对应就是MAJOR,MINOR.PATCH:1是marjor version;2是minor version;3是patch version。

MAJOR:这个版本号变化了表示有了一个不可以和上个版本兼容的大更改。

MINOR:这个版本号变化了表示有了增加了新的功能,并且可以向后兼容,但是实践证明向后兼容不靠谱,我的惨痛经历,给大家敲醒警钟

image.png

image.png

只是MINOR从61->76,protable 可编辑表格就有问题了,值得注意

PATCH:这个版本号变化了表示修复了bug,并且可以向后兼容。

因为major version变化表示可能会影响之前版本的兼容性,所以无论是波浪符号还是插入符号都不会自动去修改major version,因为这可能导致程序crush,可能需要手动修改代码

3.如何锁定node版本

在一些老项目中,node版本对项目影响非常大,如果不小心升级会造成不可预知的影响,所以建议开发过成功锁定node版本号

在项目根目录添加 .nvmrc 文件可指定 nvm 默认的 node 版本

$ node -v > .nvmrc

可以配置package.json的 engines字段image.png 但是只是对yarn有作用 可以创建 .npmrc 文件配置如下内容:

engine-strict = true

就可以使得 engines 字段对 npm 生效了。

参考: github.com/wayou/wayou… www.csdn.net/tags/OtTaEg… blog.csdn.net/qq_34295211…