npm review
package.json是一个npm文件用于跟踪npm包。
composer.json是一个compser文件,用于跟踪php包。
npm(Node Package Manager)是随同 NodeJS 一起安装的包管理工具,它让 JavaScript 开发者分享、复用代码更方便(类似于maven)。
npm install packageName:将packageName包安装到node_modules文件夹下。
npm install packageName -s/-S/–save在安装时会写入package.json中的dependencies中,从npm5开始npm install packageName和npm install packgeNamge –save等效(By default, npm install will install all modules listed as dependencies in package.json)。
npm install packageName -d/-D/–save-dev在安装时会写入package.json中的devDependencies中。
npm install packageName -g/–global在安装时会装在系统npm安装目录下的node_modules中。
npm i等价于npm install
执行 npm install -> 查找package.json -> 检测是否有lock文件:
若没有 lock 文件 -> 分析依赖关系(可能包会依赖其他的包)-> 从 registry 仓库下载压缩包(并做缓存,npm5开始) -> 解压到 node_modules -> 生成 package-lock 文件 -> 完成安装。
有 lock 文件 -> 去 lock 文件里检查包的版本是否和 package.json 一致(按 semver 版本规范检测),如果一致则优先查找缓存,得到压缩包;如果不一致,重新构建依赖关系,再从 registry 仓库去获取压缩包。
package.json中记录项目名称、版本号、项目描述,以及列出当前项目所依赖的其他库的信息和依赖库的版本号。
scripts中字段是用于适配npm run XXX命令的,例如:
1 | "scripts": { |
上述字段表示npm run build命令等价于node build/build.js命令
有时候对应的命令不能直接执行,只能通过npm run XXX执行,因为对应命令没有全局安装所以无法直接执行,而npm会到./node_modules/.bin目录里找到对应的文件作为node脚本来执行,./node_modules/.bin目录下是各个文件的软链接,通过软连接找到对应的文件执行。因为node已经是全局安装了,所以可以直接执行node build/build.js命令。
如果只运行了npm run命令,那么就会去执行scripts字段里所有的脚本命令。
dependencies中表示生产环境下的依赖管理(运行时依赖),主要保存很多在npm run build时构建项目的包,这些包的代码会被打包添加到实际的应用代码之中,例如element UI、echarts等在项目运行中使用的依赖。
devDependencies中表示开发环境下的依赖管理(开发时依赖),生产环境中用不到的依赖,例如webpack、gulp、babel等压缩代码,把ES6转译成ES5,打包等需要的工具(当打包结束时就会被抛弃,并不会添加到打包的结果中)。
engines中规定开发时环境的node.js和npm的最低版本。
browserslist中表示小于阈值的部分在ES6的转译时可能将会忽略,以及是否要去兼容某些浏览器。