关于npm中-g -D -S的理解

四种安装模式

  1. npm install module_name (本地安装)
  2. npm install module_name -g (全局安装)
  3. npm install module_name -D (开发时要用)
  4. 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中
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家也很重要呢

  1. 如果只是全局安装了而没本地安装,就得require(’’) ,注意:这里是path路径
    比如:引入一个全局的包可能就是requirt(’/我是/一个/路径/…’)通过全局包的路径引入
    我是嫌麻烦,如果有大哥觉着能接受,下面的内容可以不用看了…
    如果使用本地安装,那么就可以直接require(’’)引入使用,注意:这里是name名字
  2. 一个包大概率会在不同的项目上会重复用到,
    如果只全局安装,所有的项目使用的同一个版本,那么当某个项目需要该包更新版本时,更新后可能就会影响到其他同样引用该包的项目,
    因此本地安装可以更灵活地在不同的项目使用不同版本的包,并避免全局包污染的问题.

乖乖,越看越懵逼,啥时候用本地安装,啥时候用全局安装啊~~~
一般要用到该包的命令执行任务的就需要全局安装
如果要通过require引入使用的就需要本地安装

不过其实不用担心何时用本地安装,何时用全局安装,一般该包的官网会说
以上说的只是希望大家知晓本地安装和全局安装的区别

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值