【发布时间】:2016-07-29 06:02:04
【问题描述】:
最近开始使用 Gulp,但我不知道是否真的有必要在当前项目的文件夹中直接拥有 node_modules 的副本? 例如。我有这个结构:
我的网站
└─建造者
└──node_modules
└─工作
└─工作2
如何在不复制文件夹的情况下从文件夹“work”或“work2”访问文件夹“builder”中的 node_modules?它非常大,大约 100mb,在我看来,为每个新项目都拥有它的副本是没有意义的。
我在 package.json 文件中尝试了这一行 export NODE_PATH='D:\OpenServer\domains\mysite\build',然后尝试了命令 gulp,但它回复了[10:24:27] Local gulp not found in d:\OpenServer\domains\mysite\work
[10:24:27] Try running: npm install gulp
【问题讨论】:
-
找到了一个部分解决方案,将文件夹 'work'、'work2'... 放在文件夹 'builder' 中,因为 node_modules 可以在父文件夹中识别。
-
为什么要把node_modules放到builder里面呢,为什么不直接放到mysite里面呢?
-
虽然不推荐,但你始终可以使用相对路径,即
require('./builder/node_modules/....') -
它从当前脚本向上遍历路径,直到找到
node_modules/- 如果到达根目录时该目录不存在,则失败。require()也接受一个以./或只是/开头的路径。在这种情况下,它会将其视为文件路径。请记住,NPM 和 Node.js 是两个独立的系统。node_modules/约定是 Node.js 的东西,package.json约定是 NPM 的东西。 -
这也是 Github 上的 NPM 存储库中正在进行的讨论。 有一个模块缓存存在于您的主目录中,尽管目前所有内容都被复制了。在我看来,模块应该从该目录进行符号链接,这是一个恒定的时间操作。但是 NPM 所有者似乎并不同意 :)