package.json文件

22 阅读2分钟

package.json文件是项目的描述文件,记录了当前项目的信息,例如该项目的名称、版本、作者,以及该项目依赖了哪些第三方模块等。

当我们从github上下载一个项目时,需要在命令行使用npm install来安装相关依赖,但是具体会安装哪些依赖,就是根据package.json文件中的内容来确定的。

当我们在自己的项目中新增一个依赖时(eg:npm install bootstrap),该模块的相关信息也会自动添加到package.json文件中。

关于依赖的版本号

我们常见的版本号命名规则为:[name].x.y.z-[state]

name为可选段,一般为v,表示Version;

x.y.z为各版本的序号,一般都会遵循语义化版本 2.0.0 | Semantic Versioning,实际上基于此规范,name段不会出现;

x、y、z为非负整数。

x为主版本号,变化了表示有了一个不兼容上个版本的大更改。

y为次版本号,变化了表示增加了新功能,并且可以向后兼容

z为修订版本号,变化了表示有bug修复,并且可以向后兼容。

state可选段,用来表示当前软件的状态。例如:b 表示bate版,即测试版。

比如1.2.2,遵循“大版本.次要版本.小版本”的格式,安装时只安装指定版本。

^+指定版本eg:^1.2.2,表示安装1.x.x的最新版本(不低于1.2.2),但是不安装2.x.x,也就是说安装时不改变大版本号。

波浪号(~)+指定版本eg:~1.2.2,表示安装1.2.x的最新版本(不低于1.2.2),但是不安装1.3.x,也就是说安装时不改变大版本号和次要版本号。

*:意味着安装最新版本的依赖包。

推荐使用~,只会修复版本的bug,比较稳定。

使用^时 ,有的小版本更新后会引入新的问题导致项目不稳定,比如:有的老项目安装依赖后页面无法显示,修改依赖版本后才正常。

需要注意的是,如果大版本号为0,则^的行为与~相同,这是因为此时处于开发阶段,即使是次要版本号变动,也可能带来程序的不兼容。

当然你可以指定特定的版本号,直接写1.2.3,前面什么前缀都没有,这样也没问题,但是如果依赖包发布新版本修复了一些小bug,那么就需要手动修改package.json文件中的版本号;~和^则可以解决这个问题。