即使在安装 npm install -g gulp 后也找不到本地 gulp 安装
Posted
技术标签:
【中文标题】即使在安装 npm install -g gulp 后也找不到本地 gulp 安装【英文标题】:No local gulp install found even after installing npm install -g gulp 【发布时间】:2014-06-10 16:15:13 【问题描述】:我尝试通过
安装 gulpnpm install -g gulp
输出似乎是这样的。 (我跳过了一些日志)
npm http 304 https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/lodash._htmlescapes
/usr/bin/gulp -> /usr/lib/node_modules/gulp/bin/gulp.js
gulp@3.6.2 /usr/lib/node_modules/gulp
├── tildify@0.2.0
├── pretty-hrtime@0.2.1
├── deprecated@0.0.1
├── archy@0.0.2
├── semver@2.2.1
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
├── orchestrator@0.3.3 (sequencify@0.0.7)
├── liftoff@0.9.8 (extend@1.2.1, minimist@0.0.8, resolve@0.6.3, findup-sync@0.1.3)
├── vinyl-fs@0.1.4 (graceful-fs@2.0.3, map-stream@0.1.0, mkdirp@0.3.5, vinyl@0.2.3, glob-stream@3.1.9, glob-watcher@0.0.6)
└── gulp-util@2.2.14 (lodash._reinterpolate@2.4.1, dateformat@1.0.7-1.2.3, minimist@0.0.8, vinyl@0.2.3, multipipe@0.0.2, through2@0.4.1, lodash.template@2.4.1)
在上面的脚本中我可以看到一行 /usr/bin/gulp -> /usr/lib/node_modules/gulp/bin/gulp.js 我猜这是在 bin 文件夹中创建一个 simulink。所以我应该在全球范围内得到 gulp 但我得到了这个错误。
No local gulp install found in /var/www/ksapp
知道为什么我会收到此错误。
谢谢
【问题讨论】:
【参考方案1】:As pointed out in the doc,您应该全局安装它(您已经这样做了)并将它添加到您的项目开发部门(本地):
npm install gulp --save-dev
【讨论】:
Gulp 是否有可能不将节点文件复制到项目本地文件夹中?据我所知,在全局安装 Gulp 后,此命令会生成它的本地副本。 关键是本地安装保证即使您的系统安装升级也不会破坏您的项目构建(全局 gulp 安装只是为了在路径中提供二进制命令)。这与 grunt 的情况相同。 我也讨厌每个项目文件夹中节点模块的完整副本,所以我经常使用npm link gulp --save-dev
很好,但我没有看到 npm link gulp --save-dev
尊重 --save-dev
参数。
@PA,再次重申 cmets 的其他答案,npm link gulp
是个坏主意。【参考方案2】:
我遇到了同样的问题。通过创建链接解决了它
npm link gulp
【讨论】:
就像另一条评论中所说的那样,这是一个坏主意。像 gulp 或 grunt 这样的构建系统的设计方式是,特定项目可以依赖于特定构建的特定版本(因此,无论全局系统的状态或安装版本如何,仍然会构建)。试图将 gulp 的全球版本和本地版本联系在一起是在自取其辱...... @MangledDeutz 我对将 gulp 与这个特定项目联系起来不感兴趣。我只是想把它用作一个小命令行工具来自动化一些构建任务。我的 gulpfile 不会成为 git repo 的一部分,事实上,如果我在另一台计算机上克隆这个 repo,我可能会决定不使用 gulp 来自动化这些任务,我可能会使用不同的工具。我想假装 node 和 npm 不存在,而 gulp 只是 /usr/bin 中的一些小程序,它在 CWD 中查找 gulpfile.js 并神奇地工作。如果这就是我想要的,那么这个答案不是合理的吗? @JackM 这仍然不是一件合理的事情,因为根据系统范围内安装的 gulp 版本,它可能会或可能不会与 gulpfile.js 一起工作(并且“神奇地”无缘无故地中断)... @MangledDeutz 但对于任何接受文件作为输入的命令行程序来说都是如此。 耶!这!让开发者决定什么时候全局版本合适!!【参考方案3】:检查 /home/username/.npm 目录:可能文件的组/所有者是 root。更改用户名:
chown -R username.username /home/username/.npm
【讨论】:
【参考方案4】:我最近遇到了“找不到本地 gulp”错误消息。我可以通过创建从全局 node_modules 目录到我的 gulpfile.js 所在的本地项目目录的符号链接来解决它。
【讨论】:
这样,您就违背了本地可用构建系统的目的,当您升级基本系统时,该构建系统不会中断。这当然是一个坏主意,与作者的意图背道而驰......以上是关于即使在安装 npm install -g gulp 后也找不到本地 gulp 安装的主要内容,如果未能解决你的问题,请参考以下文章