这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
今天学习的是packages.json配置文件的详解
版本号:
版本号由三部分组成,由主版本号,次版本号,修补版本号组成。会匹配最新的小版本依赖包。比如1.2.3会匹配所有的1.2.x版本,但不会匹配1.3.0版。^会匹配最新的大版本依赖包。比如^1.2.3会匹配1.x.x的包,但是不会匹配2.0.0的包。* 会安装最新的依赖包,比如* 1.2.3,会匹配x.x.x。
我们也可以直接指定版本号,比如指定1.2.3版本,虽然这样写没什么问题,每次一发布新的修补版本我们就要手动修改一次。缺点很明显。所以我们推荐使用 ~ 和^和* 来解决手动修改版本号的问题。一般推荐使用~去匹配版本号,因为修改版本的更新一般都是小改动。如果大版本的迭代,我们使用^,* 这两个。
devDependencies
devDependencies配置的是开发环境,安装项目开发是所需要的依赖。管理的依赖包仅在开发阶段有效。
dependencies
dependencies配置的是生产环境。安装项目运行时所依赖的模块。等项目上线时候依然需要使用的我们就装在生产环境中了。
packages-lock.json
packages-lock.json的作用如同他名字中的lock一样,是用来固定版本的,它的产生是用来对整个依赖树进行版本固定的也就是版本锁死。
packages-lock.json的出现是为了解决一个问题,就是在做项目时候,如果大家用的依赖包的版本都不一样,由于版本号不统一,是容易出现bug的。
当我们创建一个项目执行npm install的时候会产生一个packages.json,同时也会产生一个packages-lock文件,和packages.json在同一个安装目录下。这样每次安装都会出现相同的结果,不管你在什么机器上面或者什么时候安装。当我们下次运行npm install的时候,npm发现如果有packages-lock.json,就会根据packages里面的内容来处理和安装依赖而不是根据packages.json来处理了。