我真的不明白。当我在主文件夹上运行npm install时,为什么必须下载node_modules中的所有依赖项?为什么需要为每个单个项目执行此操作?在Sinatra(Ruby微框架)中,我从来不必这样做,并且很容易使用全局安装的gem,而无需再次下载并将它们中的每一个保存到项目文件夹中。
我在某处读过这样做是为了避免版本不匹配问题,但如果它的工作方式是全局安装,而且只需要在许多其他语言(如Python)中使用它(使用virtualenv来解决版本问题), Ruby等,为什么node.js可以是相同的?
DRY发生了什么?
答案 0 :(得分:0)
您可以npm install --global
(简称-g
)进行全局安装。但是当2个项目引用相同依赖项的不同版本时,这会产生问题。您将遇到难以追踪的冲突。另外在本地安装它使它更便携。您可以参考this document
此问题不仅存在于node.js世界中。只是不同的语言不同地处理这个问题我不太了解红宝石,但是:
virtualenv
来分离依赖关系,这需要更多的努力。$HOME/.m2
文件夹中的工件,但在编译项目时,他们会将这些字节码从.m2文件夹复制到本地文件夹target
。对于npm install --global
/ grunt.js
等工具,您有时间gulp.js
。
我认为它与DRY无关,因为你没有两次编写代码。它刚刚下载了两次。
话虽如此,你仍然可以全身心地安装一切。