管理包
用来描述项目及项目所以来的模块信息。管理项目中的依赖包。
一般 npm 安装的时候,自动生成。
语义版本控制
版本号: major.minor.patch 主版本号.次版本号.修补版本号
- 修补版本: 改动不会破坏任何内容的错误修复
- 次要版本: 不会破坏任何内容的新功能
- 主要版本: 破坏兼容性的一个大更新。
版本指定
~匹配最小版本依赖包(修补版本号)^匹配最新的大版本依赖包(次要版本号和修补版本号)*安装最新版本的依赖包
^ 和 * 可能会引起兼容问题
依赖配置
- dependencies
生产环境中必须依赖的包,使用 npm 安装时,该 npm 包会被自动插入到此项配置中 npm install <PACKAGENAME> 使用 --save 也会自动插入。
不要把测试或者过渡性的依赖放在dependencies,避免生产环境出现意外的问题。
- devDependencies
声明开发阶段需要的依赖包。比如 Webpack,Eslint,Babel等,用于辅助开发。当上线打包的时候不需要这些包,就可以把这些依赖添加到 devDependencies 中。npm install --save-dev <PACKAGENAME>
- engines
当维护一些旧项目时,可能对 npm 包的版本或者 Node 版本有特殊要求,如果不满足条件就可能无法将项目跑起来。为了让项目开箱即用,可以在engines字段中说明具体的版本号。只起一个说明作用。不会影响依赖包的安装。
package-lock.json
解决的问题
为解决不同人电脑安装的所有依赖版本都是一致的,确保项目代码在执行的运行结果都一样,就需要使用 package-lock.json
生成
package-lock.json 会在 npm 更改 node_modules 目录树或者 package.json 时自动生成。这样在每次安装都会有相同的结果。
文件改动
如果需要更新 lock 的 package 的版本,可以通过 npm i xxx
package-lock.json 意外更改情况
package.json文件修改了- 挪动了包的位置 dependencies 移动到了 devDependencies