注意: npm v5
以后版本安装包可以不加 --save
,它会自动在package.json
中的 dependencies
保存依赖信息
package.json
express": "^4.16.2"
这个^
符号就是代表版本
对于开发者来说最有价值就是dependencies
,可以用来帮我们保存第三方包的依赖信息。如果你的node-modules
删除了也不用担心,我们只需要npm install
就会把package.json
中 所有dependencies
依赖项都下载回来。
- 所以建议每个项目的根目录都有
package.json
文件 - 建议执行
npm install 包名
的时候都加上--save
这个选项, 目的就是为了保存依赖项信息
{
...
"dependencies": {
"art-template": "^4.12.2",
"express": "^4.16.2",
}
}
package-lock.json
package-lock.json
中记录你所使用第三方包的所有依赖选项
, 依赖包中也可能有依赖包 。 比如express 包 还依赖别的第三方包都会在这里记录下来。你可以打开express的package.json 就可以看到它的依赖!package-lock.json
还详细的记录了所有依赖的版本和下载地址。 可以高效的完成包安装package-lock.json
中主要目的就是为了锁定当前项目使用包的版本和它依赖的版本, 不至于项目每次安装都是最新的依赖包,导致版本不符项目出错
npm v5
以前是不会有 package-lock.json
这个文件的, 之后才加入。 当你安装包时, npm
自动会生成或者更新 package-lock.json
文件
{
...
"art-template": {
"version": "4.12.2",
"resolved": "http://registry.npm.taobao.org/art-template/download/art-template-4.12.2.tgz",
"integrity": "sha1-pB64LZZ5u9HHPx+Dj/RujrBhJWU=",
"requires": {
"acorn": "5.2.1",
"detect-node": "2.0.3",
"escodegen": "1.9.0",
"estraverse": "4.2.0",
"html-minifier": "3.5.6",
"is-keyword-js": "1.0.3",
"js-tokens": "3.0.2",
"merge-source-map": "1.0.4",
"source-map": "0.5.7"
}
}
}