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:/development
或c:/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 安装在项目根目录之外的主要内容,如果未能解决你的问题,请参考以下文章