Gulp在项目根目录之外安装

时间:2014-11-16 11:48:25

标签: node.js laravel npm gulp node-modules

在新项目中安装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。

我不记得以前必须设置任何特定的配置,所以我完全不知道它为什么表现不同。

2 个答案:

答案 0 :(得分:2)

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

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

  

从$ PWD开始,npm将走向文件夹树,检查包含package.json文件或node_modules文件夹的文件夹。如果找到这样的东西,那么这被视为有效的当前目录"用于运行npm命令。 (这种行为的灵感来自于git' sgit文件夹,在工作目录中运行git命令时寻找逻辑。)

     

如果未找到包根,则使用当前文件夹。

答案 1 :(得分:0)

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

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

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