关于npm中-g -D -S的理解
四种安装模式
- npm install module_name (本地安装)
- npm install module_name -g (全局安装)
- npm install module_name -D (开发时要用)
- npm install module_name -S (发布生产时要用)
1.本地安装 npm install module_name
npm install module_name 本地安装(将安装包放在当前项目 ./node_modules 中)
2.全局安装 npm install module_name -g
npm install module_name -g 或 npm install module_name --global(注意这是两个 - 杠)
其中参数-g的含义是代表安装到全局环境里面
查看npm -g 全局安装路径
可通过命令 npm config get prefix 查看 npm 安装路径
也可以通过npm config set prefix 可设置 npm 安装路径
3.开发时要用 npm install module_name -D
npm install module_name -D 即 npm install module_name --save-dev
写入devDependencies
4.发布生产时要用 npm install module_name -S
npm install module_name -S 即 npm install module_name --save
写入dependencies
注:devDependencies 和 dependencies 的位置在自动生成的package,json中
5.全局安装和本地安装稍微详细的理解
全局安装
全局安装方式是键入命令:npm install module_name -g 或 npm install module_name --global,
其中参数-g的含义是代表安装到全局环境里面.
本地安装
本地安装方式是键入命令:
npm install module_name 或
npm install module_name --save-dev或
npm install module_name --save,
其中参数--save-dev的含义是代表把你的安装包信息写入package.json文件的devDependencies字段中,
其中参数--save的含义是代表把你的安装包信息写入package.json文件的dependencies字段中,
包安装在指定项目的node_modules文件夹下。
全局安装有啥用?怎么用?
全局安装的包可提供直接执行的命令(例:vue -h可以查看定义了什么命令)。
注意是:命令,在命令行中使用
比如vue全局安装后,可以在命令行上直接执行vue -V、vue -h等
(原理:全局安装的vue会将其package.json中的bin命令注入到了全局环境,使得你可以全局执行:vue xxx命令)
- 如果只是本地安装了vue,未在全局安装vue,直接执行这些命令会报错。
非要执行相关命令则需要:node ./node_modules/gulp/bin/gulp.js -v(查看版本) 这样用一大串命令来执行。因此全局安装就发挥到他的好处了,一个gulp -v就搞定
(敲个案例真麻烦)
那是不是全部用全局安装就好了?起码现在感觉是这样(我是这么觉着)
当然不,并不是每个包都必须要全局安装的,
一般在项目中需要用到该包定义的命令才需要全局安装。
啥意思?
比如vue <taskName>执行vue任务...等,
所以是否需要全局安装取决于我们如何使用这个包。(如果本地安装,要写好长的路径,虽然可以复制,依然觉着麻烦)
全局安装的就像全局变量有点粗犷(这个字是kuang四声,不是guang三声),
但在某些情况下也是必要的,全局包很重要,但如果不需要,最好避免使用。
一直在说全局安装的好,本地安装是不是就废了?
本地安装::::才不是呢,yin家也很重要呢
- 如果只是全局安装了而没本地安装,就得require(’’) ,注意:这里是path路径
比如:引入一个全局的包可能就是requirt(’/我是/一个/路径/…’)通过全局包的路径引入
我是嫌麻烦,如果有大哥觉着能接受,下面的内容可以不用看了…
如果使用本地安装,那么就可以直接require(’’)引入使用,注意:这里是name名字 - 一个包大概率会在不同的项目上会重复用到,
如果只全局安装,所有的项目使用的同一个版本,那么当某个项目需要该包更新版本时,更新后可能就会影响到其他同样引用该包的项目,
因此本地安装可以更灵活地在不同的项目使用不同版本的包,并避免全局包污染的问题.
乖乖,越看越懵逼,啥时候用本地安装,啥时候用全局安装啊~~~
一般要用到该包的命令执行任务的就需要全局安装
如果要通过require引入使用的就需要本地安装
不过其实不用担心何时用本地安装,何时用全局安装,一般该包的官网会说
以上说的只是希望大家知晓本地安装和全局安装的区别