关于gulp的2个手册说我需要先全局安装gulp(带-g标志),然后再在本地安装一次。我为什么需要这个?
当前回答
您可以将全局安装的gulp链接到本地
npm link gulp
其他回答
我不确定我们的问题是否与只在本地安装gulp直接相关。但是我们必须自己安装一堆依赖。这导致了一个“巨大”的包裹。我们不确定只在本地安装gulp是否真的是个好主意。我们必须这样做是因为我们的构建环境。但如果不是绝对必要的话,我不建议非全局安装gulp。我们也遇到了类似的问题,如下文所述
我们的任何开发人员在他们的本地机器上都不会遇到这些问题,因为他们都在全局安装了gulp。在构建系统上,我们遇到了所描述的问题。如果有人感兴趣,我可以深入研究这个问题。但是现在我只想说,只在本地安装gulp并不容易。
只是因为我在这里没有看到它,如果你是在MacOS或Linux上,我建议你把它添加到你的PATH(在你的bashrc等):
node_modules/.bin
使用这个相对路径条目,如果你位于任何节点项目的根文件夹中,你可以运行任何命令行工具(eslint、gulp等),而不用担心“全局安装”或npm run等。
一旦我这样做了,我就从来没有全局安装过一个模块。
TLDR;原因如下:
这是因为gulp尝试使用本地安装的gulp版本运行gulpfile.js,见这里。因此需要在全局和本地安装gulp。
从本质上讲,当您在本地安装gulp时,脚本不在您的PATH中,因此您不能仅仅键入gulp并期望shell找到该命令。通过全局安装它,gulp脚本进入您的PATH,因为全局节点/bin/目录最有可能在您的路径上。
为了尊重本地依赖,gulp将使用本地安装的gulpfile.js来运行gulpfile.js。
您可以将全局安装的gulp链接到本地
npm link gulp
从技术上讲,如果本地安装中的node_modules文件夹在PATH中,则不需要全局安装它。一般来说,这不是一个好主意。
或者,如果npm test引用了gulp,那么你只需要输入npm test,它就会运行本地的gulp。
我从未全局安装过gulp——我认为这是一种糟糕的形式。
推荐文章
- 在React Native中使用Fetch授权头
- 为什么我的球(物体)没有缩小/消失?
- 如何使用jQuery检测页面的滚动位置
- if(key in object)或者if(object. hasownproperty (key)
- 一元加/数字(x)和parseFloat(x)之间的区别是什么?
- angularjs中的compile函数和link函数有什么区别
- 删除绑定中添加的事件监听器
- 很好的初学者教程socket.io?
- HtmlSpecialChars在JavaScript中等价于什么?
- React: 'Redirect'没有从' React -router-dom'中导出
- 如何在React中使用钩子强制组件重新渲染?
- 我如何使用Jest模拟JavaScript的“窗口”对象?
- 我如何等待一个承诺完成之前返回一个函数的变量?
- 在JavaScript中根据键值查找和删除数组中的对象
- 使嵌套JavaScript对象平放/不平放的最快方法