Gulp安装:全局 vs. 本地作为开发依赖项

4

在gulp的说明页面上,要求我们全局安装它,并将其作为项目的dev依赖项安装。

我的问题是为什么我们需要安装两次?为什么项目只能使用全局安装的那个呢?

当提示安装本地版本时,我确实遇到了这个错误,并且我也按照这篇教程进行了操作,但仍然卡住了。 http://blog.webbb.be/command-not-found-node-npm/

[11:47:51] Local gulp not found in ~/Documents/project
[11:47:51] Try running: npm install gulp

链接-> https://github.com/gulpjs/gulp/blob/master/docs/getting-started.md

这是关于Gulp的入门指南,其中包含如何安装、使用和配置Gulp。它还提供了许多示例代码和常见问题的解答。如果你想学习如何更高效地构建前端项目,Gulp是一个非常有用的工具。
1个回答

2
该错误意味着您没有在本地安装gulp。这意味着您需要将其添加到package.json的依赖项中(或者只需调用npm i gulp --save)。
它需要在本地安装,因为gulpfile.js通常会运行与gulp相关的一些代码。这就是为什么它在gulpfile.js顶部调用var gulp = require('gulp');的原因。此调用从您的包node_modules加载gulp。这也是像gulp.taskgulp.src这样的函数来自的地方。
同时,您希望在CLI中轻松使用gulp,这就是为什么它还需要全局安装,以便您可以仅通过以下方式运行它:
$ gulp

顺便提一下,你也可以只运行本地的gulp

  1. Insert to your package.json:

    "scripts": {
        "gulp": "gulp",
    }
    

    This tells npm that by executing gulp command we want to run script ./node_modules/.bin/gulp.

  2. Run (you'd have to do this in all projects):

    $ npm run gulp
    

因此,全局安装肯定更容易。


感谢您的全面回复,很有道理。只是想更好地理解,当您在项目目录中使用终端并发出命令 $ gulp 时,它会启动本地的还是全局的? - user2727195
当您在项目内部时,它会运行全局的项目。尝试运行 $ which gulp。例如,在我的系统中,它安装在 /opt/local/bin/gulp - martin
好的,which gulp 在我的情况下返回 /usr/local/bin/gulp,然而当我在非项目目录中输入命令 $ gulp 时,全局的 gulp 会寻找本地的 gulp。 - user2727195
我发现这两个命令很困惑,npm install gulp-cli -gnpm install gulp -g,这两个程序有什么区别? - user2727195
gulp-cli 是您全局安装的,只需调用 $ gulp 即可使用。您可能不想安装 npm install gulp -g。您项目的所有包依赖项都应该在本地安装。 - martin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接