在新项目中安装Gulp时遇到了一个奇怪的问题。
假设我有以下路径:
c:/development/myproject
当我在该目录中运行npm install gulp
时,实际上会在
c:/development/node_modules
而不是
c:/development/myproject/node_modules
所有gulp插件也安装在项目根目录之外的那个目录中。
我之前已经安装了gulp的早期项目,当我尝试在该项目目录中重新运行gulp安装时,它已正确安装在项目根目录中(例如:c:/development/myolderproject/node_modules
),而不是在外部。
我不认为这与案件有任何关系,但是新项目使用Laravel 4,而另一个项目使用的是Laravel 5。
我不记得以前必须设置任何特定的配置,所以我完全不知道它为什么表现不同。
答案 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安装到。
希望这可以帮助其他人解决这个愚蠢的问题。