npm 全局安装和本地安装的区别总结

npm是什么?是干什么的?

参考这篇博客:npm到底是干什么的(非教程,npm新人入)
总结来说:npm相当于maven的作用

 

了解了上面之后,我们再了解一下最困惑我们的有关npm的全局安装和本地安装问题

首先我们要明白这两个概念最基础的区别:

本地安装:
是指你在该(项目)目录下使用或者通过命令行进入到该(项目)目录下,使用 了npm install xxx的方法。然后在该(项目)目录下会生成一个node_modules文件夹,安装的东西就会安装(或者说下载)到这个node_modules文件夹里。可能有人又问了,为什么前面的该字后面有个括号括着项目两个字啊?搞前端的人应该都懂,这是因为nmp平时就是方便我们下载jQuery等一大堆前端框架用的,所以通常都是会下载到项目里用的(可能又有人说了,我是学后台的。老师给我们讲前端的时候都是下载好jQuery文件然后复制到项目相应的文件夹,然后引用就行了。那是后端玩前端的简单玩法。前端不比后端简单,它也是有一套完整的开发机制的。你那直接下载jQuery放到项目里引用,其实就相当于我们将jar包下回来然后放到项目里引用一样)

 

全局安装:
是指你在任何地方(即无论你进入的是哪一层目录),使用了npm install xxx -g或者npm install xxx --global。然后在你安装npm的目录下(注意啊,是npm这款软件的安装目录哈!通常是C:\Users\用户名\AppData\Roaming\npm)会有一个node_modules文件夹(对!这里也有一个和本地安装一样的文件夹。忘了是安装好npm就有还是执行相关npm install xxx -g命令才产生的了。哎~!这不是重点)。你执行npm install xxx -g安装的东西就会安装(或者下载)到这个node_modules文件夹里。

 

好了,恭喜你大概知道执行本地安装和全局安装的命令后会发生什么和他们之间的最明显的区别了。

可是又有同学问了,我听人家说,全局安装是一次执行,全局使用(也可以说成是引用,但是往往有很多人因为引用这两个字才被搞糊涂的,至少我就是。所以,我还是建议大家将它定义为使用好一点,为什么呢?接下来再说)。本地安装,只有本项目才能使用。其实这个说法是没问题的,但是恰恰是这浅显的几个字,然我们想多了。

我最上面说过,npm就相当于maven。它获取到(或者说下载回来)的东西(例如:jQuery等前端框架)就相当于Java里面的jar包(例如:springMVC等Java框架)。重点来了哈,学Java的都知道,jar包是使用某种自己不想写而别人已经写好的功能,我们选择直接引用的半成品工具或者框架。随着技术的发展,spring boot出现了。我们明白到,其实jar包不仅仅是一个半成品或者是工具。它也可以是一个完整的可运行的项目!!相应的npm获取到(或者说下载回来)的东西,有可能是一个半成品的前端框架,更恐怖的是:也可以是一个完整的项目(或者说是软件、组件)!!!!什么?还不明白?举个栗子,cnpm其实就是这样一个有完整功能的组件(或者说是软件)。cnpm有着npm相同的功能,这就是活生生的栗子啊。

 

好了,恭喜你,你又知道npm下载回来的东西都有啥了。接下来。我们再说回本地安装和全局安装的区别这一块。既然我们知道npm下载回来的可能是软件,甚至是我们开发中要用的软件,也有可能是前端框架。那什么时候使用本地安装,什么时候采用全局安装呢?很简单嘛,其实都可以。真的!全部使用本地安装也行,全部采用全局安装也行。只是在日常开发中还是区分一下好一点,以免发生不必要的麻烦。我个人认为,像cnpm、打包工具之类的软件类产品,就采用全局安装,这样就可以在本地任何时候使用这个工具或者软件(全局安装还有个好处上面说了嘛,一次安装,全局使用。就像配置了环境变量一样,可以在任何位置调用该软件的命令行执行命令)。像jQuery这种的前端框架,就采用本地安装,将他安装到使用它的项目目录中,这样后期提交代码和移植时,会解决很多问题:工具类的cnpm不会因为移植而让别人再下载安装(通常别人会安装好自己的),也能让前端jQuery等框架只出现再该项目中。

再说一下,要是全部采用本地安装和全局安装会怎么样?答案是一样的,全部采用了本地安装,使用打包工具是,命令行可能就要麻烦点切换到该路径下才能使用。全部采用全局安装,代码移植时,对方因为执行了你的项目,会在自己的npm路径下全局安装你项目中使用的前端框架和软件

其实前端开发还有一套打包等一系列和后端的操作,在这就不多说了。本地安装和全局安装现在明白了吗?

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: 在npm中,假设我们有一个名为"my-app"的项目。当我们使用"npm run install"命令时,它会查找并执行项目中的"package.json"文件中的"scripts"部分。在"scripts"部分中,我们可以为"install"添加一个自定义的脚本命令。例如,我们可以在"scripts"中的"install"属性中设置为"npm install",这是npm的默认安装命令。 当我们运行"npm run install"时,它将执行"npm install"命令,这将安装项目中的所有依赖项。这些依赖项通常在"package.json"文件的"dependencies"和"devDependencies"部分中定义。"dependencies"是项目的运行时依赖项,而"devDependencies"是项目在开发过程中的开发依赖项。 而"npm install"命令将按照"package.json"文件中定义的依赖项列表,从npm仓库中下载并安装这些依赖项。默认情况下,安装的依赖项将以本地方式安装,即仅在项目文件夹中可用。 对于"npm run install"全局路径的问题,我们可以在"scripts"中的"install"属性中定义自定义的脚本命令,通过"npm install -g"命令将依赖项以全局方式安装。这意味着安装的依赖项将在计算机的全局范围内可用,而不仅仅是在项目文件夹中。 总而言之,"npm run install"命令在运行时执行"npm install"命令,它通过下载并安装项目中定义的依赖项来构建项目。而全局路径可以通过在"scripts"中的"install"属性中定义自定义的脚本命令,并使用"npm install -g"命令以全局方式安装依赖项来实现。 ### 回答2: 在学习使用npm时,我们经常会用到"npm run install"这个命令。"npm run install"命令用于安装指定项目中所需要的依赖包。具体而言,它会自动查找并安装项目中所声明的依赖项。 当我们运行"npm run install"时,npm会在项目的根目录中寻找一个名为"package.json"的文件。这个文件包含了项目的配置信息,其中包括了项目所需的依赖包的列表。 npm会读取"package.json"文件中的"dependencies"和"devDependencies"字段,并且检查它们的版本要求。然后,npm会自动下载并安装这些依赖项到项目中的"node_modules"文件夹中。 需要注意的是,"npm run install"命令只会安装项目所需的依赖项,而不会安装全局的依赖项。全局依赖项通常是一些工具、库或框架,可以在任何项目中使用。 要安装全局依赖项,我们需要使用"npm install -g"命令。 "-g"参数告诉npm将该依赖项安装全局路径中。 全局路径是一个特定的文件夹,一般位于操作系统的系统路径下。全局依赖项可以在命令行中直接调用,而无需在项目中设置。 总结一下,"npm run install"命令用于安装项目所需的依赖项,而不是全局依赖项。要安装全局依赖项,需要使用"npm install -g"命令,并且会将其安装全局路径中。 ### 回答3: npm run install 全局路径指的是通过npm运行命令行工具来安装全局模块时,工具包被安装到的路径。 当我们运行`npm`命令时,会在全局`node_modules`文件夹中查找可执行脚本。通过`npm run install`命令可以运行一个特定的脚本,它在`package.json`文件的`scripts`部分定义。 当运行特定的脚本时,`npm`会自动将全局模块的可执行文件添加到系统的`PATH`环境变量中,这样我们可以在任何地方运行这些命令行工具。 通常情况下,全局模块安装路径如下: - Unix系统:`/usr/local/lib/node_modules` - Windows系统:`C:\Users\用户名\AppData\Roaming\npm\node_modules` 在这些路径中,我们可以找到通过`npm install -g`安装全局模块。全局模块不仅仅是一些可执行的命令行工具,还可以是一些JavaScript库或框架,可以在我们的项目代码中使用。 需要注意的是,全局模块一般是针对特定的项目进行安装,而不是全局安装对所有项目生效。因此,我们在项目的`package.json`文件中定义的`scripts`在其他项目中不能直接使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值