npm 的 --save 和 --save-dev 有什么区别?

每次安装依赖的时候,不知道什么时候--save 什么时候 --save-dev。
我看别人说的 --save 是 生产环境 , --save-dev是开发环境,这个生产环境是什么意思,是打包后发布到线上的么?
可是 npm run build 后的,不是将所有的依赖都给打包了吗,感觉依赖安装--save和 --save-dev 没有太大区别。。不是很懂这一块~~~

阅读 14.9k
7 个回答

这是 npm 的命令参数,和 Vue 没有关系

--save-dev 是作为开发依赖保存到 packsge.json 中的 devDependencies 中,即在开发环境中用到的依赖,如 webpack、babel 等用于开发打包的依赖,只是在执行打包时才会用到,开发的代码中并不包含这些依赖

--save 安装的则是需要在你开发的代码中用到的依赖,如 vue,你需要 import Vue from vue。

发布到线上的叫生产环境~,在本地开发的时候叫开发环境,--save就是会打包到线上去并且在线上环境能用到的,比如你npm install 一个vue-router,这个在线上环境也是能用到的依赖,所以你要--save~ 比如vue-loader这个组件只需要在开发的时候编译就好,线上并不需用的到,所以就放在开发的--save-dev里就好~~~~

直接简记,如果你线上需要依赖就加dev 不需要直接npm install就行可以。

--save-dev安装的时候会在package.json文件中的devDependencies属性添加模块,这个属性就是开发时依赖的包
--save安装的时候会在package.json文件中的dependencies属性添加模块,这个属性就是发布时依赖的包

举个栗子
如果你想把ES6编译成ES5,就用到了babel,那么 就是devDependencies,发布的时候不需要再用babel了,因为打包后就是已经编译出来的ES5代码。
如果用了VUE,由于发布之后还是依赖VUE,正式上线,投入使用的时候还是要用到VUE,所以是dependencies

给你说的通俗点.比如vue.js,就是你的产品发布了,你也必须有vue.js.再比如,webpack里面的less-loader,只是把less文件处理成浏览器可以识别的css.处理完了之后,你发布产品,就没有用了.前者需要--save,可以理解为依赖.后者--save-dev,理解为工具.

重要一点,这和vue没有半毛钱关系。这个知识点是npm的,save-dev是在开发过程中用到辅助开发的工具包,save是和你的业务代码相关的包。

用来对代码编译的比如less,babel等全都是开发依赖,是绝对不能放到dep里(增大了体积),而其他的放哪都无所谓,该打包还是会打包,不知道这样理解对不对

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏