npm inatsll的过程
- 先检查node_modules 目录下是否存在 如果不存在(会检查电脑上/usr/local/bin下的压缩包) 则继续下面操作
- npm 向 registry查询模块压缩包的网址(npm提供的模块信息查询服务 registry.npmjs.org/packaename/version)
- 下载压缩包,存放到全局对应的/.npm目录下
- 同时解压压缩到当前项目的node_modules目录下
npm install的几种方式的区别
npm install xxx # 安装模块项目目录下
npm install -g xxx # -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。
npm install --save xxx # --save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。
npm install --save-dev xxx # --save-dev 的意思是将模块安装到项目目录下,并在package文件的devDependencies节点写入依赖。
npm install X -g
- 安装模块到全局,不会在项目node_modules目录中保存模块包。
- 不会将模块依赖写入devDependencies或dependencies 节点。
- 运行 npm install 初始化项目时不会下载模块。
npm install X
- 会把X包安装到node_modules目录中
- 不会修改package.json
- 删除项目node_modules文件夹之后运行npm install命令时,也不会自动安装X
npm install X --save
开发和生产环境都需要的 ,比如js框架,ui库,网络请求库,代码执行需要的依赖
- 会把X包安装到node_modules目录中
- 会在package.json的dependencies属性下添加X
- 之后运行npm install命令时,会自动安装X到node_modules目录中
- 之后运行npm install --production或者注明NODE_ENV变量值为production时,会自动安装到node_modules目录中,即是在线上环境运行时也将安装
npm install X –save-dev
只是开发环境需要:比如wenpack的相关的插件,打包编译阶段需要的依赖
- 会把X包安装到node_modules目录中
- 会在package.json的devDependencies属性下添加X
- 之后运行npm install命令时,会自动安装X到node_modules目录中
- 之后运行npm install –production或者注明NODE_ENV变量值为production时,不会自动安装X到node_modules目录中
小结
运行时需要用到的包使用––save,否则使用––save-dev。
npm run的过程
- package.json文件里 script 配置对应命令XXX
- npm run XXX 其实就是执行上面配置 命令创建一个脚本shell
- 在脚本执行之前,会将环境变量添加在全局下,执行完毕后会删除对应的path
- 以开发包 dev 举例子 ,执行config-dev.js
- 配置文件里 从entry文件出发,从上到下加载依赖,然后执行脚本,最后打成一个包