npm引入模块时 --save 与 --save-dev 的区别

前话

nodejs创建模块很简单,这里我创建一个模块叫做demo,先建一个文件夹命名demo,然后命令行下 npm init ,填写相应信息即可。

这时,我们可以看到文件夹内自动生成了一个配置文件 package.json

内容如下:

 

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "pwcong",
  "license": "ISC"
}

 

如果我们的模块需要引入其他模块,例如 m2h,我们可以命令行执行如下命令:

npm install m2h

这样我们就可以在开发中使用m2h模块的相应方法。

但是,当模块开发完成后发布出去被其他人引入时,因为你的配置文件没有填写相应的依赖信息,导致其他人只引入了demo模块的代码文件,而没有引入m2h模块的代码文件,因此出错。

因此,我们引入m2h模块时,应当使用如下命令:

npm install m2h --save


命令执行完毕后,npm会自动更新package.json配置文件,更新后内容如下:

{
  "name": "demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "m2h": "^1.0.2"
  }
}


可以看到多了 dependencies这个依赖配置信息。

好了,上面废话这么多,我们进入正题,–save 和 –save-dev 的区别。

就上面的例子,为什么是 npm install m2h --save 而不是 npm install m2g --save-dev呢?

如果执行第二个,就会多一个 devDependencies 的依赖配置信息。

两者区别

–save-dev 是你开发时候依赖的东西,–save 是你发布之后还依赖的东西。

这便是两者的区别。

比如:

  • 我的js代码是ES6规范的,在当前浏览器中并未普及,因此我需要将js代码编成ES5。
    这时我就需要引入babel模块,因为只有在编译时需要babel模块,在发布代码后就不需要了,因此在引入babel模块时我们用 ‘npm install babel-core –save-dev’

  • 如果我用了 jQuery,由于发布之后还是依赖jQuery,所以是 ‘npm install jquery –save’

转载至: http://pwcong.me/2017/01/05/npm引入模块时--save-与--save-dev-的区别/

猜你喜欢

转载自blog.csdn.net/zSY_snake/article/details/81813374