为什么我们需要在全球和本地安装 gulp?

2022-08-30 00:04:20

关于 gulp 的 2 本手册说,我需要先全局安装 gulp(使用 -g 标志),然后再在本地安装一次。为什么我需要这个?


答案 1

全局安装工具时,用户可以在任何地方(包括节点项目外部)将其用作命令行实用程序。节点项目的全局安装很糟糕,因为它们使部署更加困难。

npm 5.2+

捆绑在一起的 npx 实用程序解决了这个问题。有了它,您可以调用本地安装的实用程序,例如全局安装的实用程序(但您必须以 开始该命令)。例如,如果要调用本地安装的 ,则可以执行以下操作:npm5.2npxeslint

npx eslint .

npm < 5.2

在 package.json 的字段中使用时,搜索该工具以及全局安装的模块,因此本地安装就足够了。scriptnpmnode_modules

所以,如果你对(在你的package.json中)感到满意:

"devDependencies": {
    "gulp": "3.5.2"
}
"scripts": {
    "test": "gulp test"
}

等等,然后运行,那么你根本不需要全局安装。npm run test

这两种方法对于让人们设置您的项目都很有用,因为不需要。这也意味着当版本在 package.json 中颠簸时,它将进行更新,因此在使用项目进行开发时,每个人都将使用相同的 gulp 版本。sudogulp

补遗:

在全球范围内使用时,gulp似乎有一些不寻常的行为。当用作全局安装时,gulp 会查找本地安装的 gulp 以将控制权传递给它。因此,gulp 全局安装需要 gulp 本地安装才能正常工作。不过,上面的答案仍然有效。本地安装始终优于全局安装。


答案 2

TLDR;原因如下:

这样做的原因是,尝试使用本地安装的 版本运行 ,请参阅此处。因此,全球和本地安装gulp的原因。gulpgulpfile.jsgulp

从本质上讲,当您在本地安装时,脚本不在中,因此您不能只是键入并期望shell找到命令。通过全局安装它,脚本可以进入您的,因为全局目录很可能在您的路径上。gulpPATHgulpgulpPATHnode/bin/

但是,为了尊重本地依赖项,将使用本地安装的自身版本来运行 .gulpgulpfile.js