Gulp 安装在项目根目录之外

Posted

技术标签:

【中文标题】Gulp 安装在项目根目录之外【英文标题】:Gulp installs outside project root 【发布时间】:2015-01-13 09:55:30 【问题描述】:

我在新项目中安装 Gulp 时遇到了一个奇怪的问题。

假设我有以下路径:

c:/development/myproject

当我在该目录中运行 npm install gulp 时,node_modules 文件夹实际上是在

中创建的
c:/development/node_modules

而不是

c:/development/myproject/node_modules

所有 gulp 插件也安装在我的项目根目录之外的那个目录中。

我还有一个较早的项目,之前已经安装了 gulp,当我尝试在该项目目录中重新运行 gulp 安装时,它已正确安装在项目根目录中(例如:c:/development/myolderproject/node_modules),而不是外部。

我觉得跟这个案例没什么关系,但是新项目是用 Laravel 4,而另一个是用 Laravel 5。

我不记得以前必须设置任何特定配置,所以我完全搞不懂为什么它的行为不同。

【问题讨论】:

你能检查c:/developmentc:/development/myproject中是否有package.json吗? 确实有c:/development。删除它并在项目文件夹中创建一个空白后,gulp 现在安装在项目根目录中。感谢您的提示! 【参考方案1】:

当您执行npm install 时,它会从父目录中找到package.json,并认为它是包根目录。

相关文档:https://www.npmjs.org/doc/files/npm-folders.html#more-information

从 $PWD 开始,npm 将遍历文件夹树,检查包含 package.json 文件或 node_modules 文件夹的文件夹。如果找到这样的东西,那么为了运行 npm 命令,它将被视为有效的“当前目录”。 (在工作目录中运行 git 命令时,此行为受到 git 的 .git-folder 查找逻辑的启发并与之相似。)

如果没有找到包根目录,则使用当前文件夹。

【讨论】:

【参考方案2】:

我运行 Ubuntu 15 并且遇到了类似的问题,即 gulp 将 node_module 文件夹安装在我找不到的地方。 gulp 会说 ../../node_modules 是位置,但它不在我的项目文件夹中。

我从上面的链接和一些研究中发现,我只需要运行 npm init 来在我的项目文件夹中创建一个 project.json。 gulp 将 node_modules 安装在另一个文件夹中,因为它会搜索 project.json 文件以将文件夹 node_modules 安装到其中。

希望这可以帮助其他人解决这个愚蠢的问题。

【讨论】:

以上是关于Gulp 安装在项目根目录之外的主要内容,如果未能解决你的问题,请参考以下文章

gulp 安装部署

gulp学习-gulpfile

gulp的安装与使用

gulp整理

gulp入门学习

gulp 自动化构建项目