备注:<=> 意为等价于;
1、npm install <=> npm i
--save <=> -S
--save-dev <=> -D
npm run start <=> npm start // 对应"scripts"里的"start"命令
少敲几下键盘,何乐而不为
2、npm i --save-dev <packname>
工程构建(开发时、“打包”时)依赖 ;例:xxx-cli , less-loader , babel-loader...
在 package.json 文件里面体现出来的区别就是,使用 --save-dev 安装的插件,被写入到 devDependencies 对象里面去,而使用 --save 安装的插件,则被写入到 dependencies 对象里面去。
3、npm i --save <packname>
项目(运行时、发布到生产环境时)依赖;例:antd , element,react...
那 package.json 文件里面的 devDependencies和dependencies对象有什么区别呢?
devDependencies是对开发环境所需依赖的声明(构建工具,测试工具) ,比如:babel,webpack,都放到当前目录。
而 dependencies是对生产环境所需依赖的声明(开发应用中使用的框架,库) ,比如:jq,react,vue都需要放到这里面。
4、对应关系如下(至于我们啥时候用--save、啥时候用--save-dev 感觉是个规范问题,用反了项目一样可以跑起来(对于安装依赖正确时),但会给其他看你项目的人带来误解、可能会导致一些bug的出现,还有一些配置的错乱等)
总结一下:
总体比较:
npm install module:
会把module包安装到node_modules目录中;
不会修改package.json;
之后运行npm install 命令时,不会自动安装module包。
npm install module --save
会把module包安装到node_modules目录汇总;
会修改package.json,将模块名和版本号添加到dependencies部分;
之后运行npm install 命令时,会自动安装module包;
之后运行npm install --production或者注明NODE_ENV变量值为production时,会自动安装 module到node_modules目录中,即是在线上环境运行时会将包安装。
npm install module --save-dev
会把module包安装到node_modules目录汇总;
会修改package.json,将模块名和版本号添加到devDependencies部分;
之后运行npm install 命令时,会自动安装module包;
之后运行npm install --production或者注明NODE_ENV变量值为production时,不会自动安装msbuild到node_modules目录中,即是在线上环境并不会进行安装。
--save和--save-dev可以省掉我们手动修改package.json文件的步骤。我们使用的一些打包工具、非项目必须依赖的都放在devDependencies中。
如何判断?
一种是你在使用当前模块的时候,当前模块在github上会告诉你,它需要使用哪种方式安装。
另一种就是你靠自己判断如何安装在哪个里面。
如何使用?
如果我们转移一个项目或者下载了一个别人的项目时,是不会带有node_modules目录中的模块的,所以我们拿到项目以后,是需要在根目录进行npm install进行项目安装的,这种默认是生产环境和开发环境都会安装。
如果带上后缀npm install --production则只会安装生产环境的所有模块,而无视开发环境的相关模块。
我们可以通过分开生产环境和开发环境相关的模块,还可以减少安装时间。达到节约时间的目的。