前话
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-的区别/