1.package.json文件是对项目的描述文件,包括项目名称,项目所有人,项目地址,以及依赖版本,开发中我们常常会被版本折磨,掉进坑里,下面就是我的一个坑~
2.版本标识
-
~的意思是匹配最近的小版本,比如~1.2.3将会匹配所有的1.2.x版本,但不匹配1.3.0 -
^的意思是最近的一个大版本 比如^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:这个版本号变化了表示有了增加了新的功能,并且可以向后兼容,但是实践证明向后兼容不靠谱,我的惨痛经历,给大家敲醒警钟
只是MINOR从61->76,protable 可编辑表格就有问题了,值得注意
PATCH:这个版本号变化了表示修复了bug,并且可以向后兼容。
因为major version变化表示可能会影响之前版本的兼容性,所以无论是波浪符号还是插入符号都不会自动去修改major version,因为这可能导致程序crush,可能需要手动修改代码
3.如何锁定node版本
在一些老项目中,node版本对项目影响非常大,如果不小心升级会造成不可预知的影响,所以建议开发过成功锁定node版本号
在项目根目录添加 .nvmrc 文件可指定 nvm 默认的 node 版本
$ node -v > .nvmrc
可以配置package.json的 engines字段,
但是只是对yarn有作用
可以创建 .npmrc 文件配置如下内容:
engine-strict = true
就可以使得 engines 字段对 npm 生效了。
参考: github.com/wayou/wayou… www.csdn.net/tags/OtTaEg… blog.csdn.net/qq_34295211…