package.json中两个字段含义简介
一直在使用npm包管理器,对于npm install module --save-dev 和 npm install module --save这两个的区别做了一些浅析的理解:
dependencies
dependencies属性被声明在一个简单的对象中,用来控制包名在一定的版本范围内,版本范围是一个字符串,可以被一个或多个空格分割。dependencied也可以被指定为一个压缩包地址或者一个 git URL 地址。
不要把测试工具或transpilers转义器(babel, webpack, gulp, postcss...)写到dependencies中。 (这些应该写到devDependencies)配置中,因为在别的项目中npm install 该包的时候会去下载dependencies中的依赖。
devDependencies
如果你的包被别人依赖或者安装时,在对方主项目中进行npm install便不会安装依赖包中的devDependencies中的npm包,所以如果你的项目中依赖的一些包不是在使用该项目时必须进行安装的,那就将包放在devDependencies中。
****整体功能比较****
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中。