为什么我应该为每个expressjs应用程序创建nodejs依赖项的node_modules文件夹

时间:2016-02-10 06:27:03

标签: python ruby node.js express module

我真的不明白。当我在主文件夹上运行npm install时,为什么必须下载node_modules中的所有依赖项?为什么需要为每个单个项目执行此操作?在Sinatra(Ruby微框架)中,我从来不必这样做,并且很容易使用全局安装的gem,而无需再次下载并将它们中的每一个保存到项目文件夹中。

我在某处读过这样做是为了避免版本不匹配问题,但如果它的工作方式是全局安装,而且只需要在许多其他语言(如Python)中使用它(使用virtualenv来解决版本问题), Ruby等,为什么node.js可以是相同的?

DRY发生了什么?

1 个答案:

答案 0 :(得分:0)

您可以npm install --global(简称-g)进行全局安装。但是当2个项目引用相同依赖项的不同版本时,这会产生问题。您将遇到难以追踪的冲突。另外在本地安装它使它更便携。您可以参考this document

此问题不仅存在于node.js世界中。只是不同的语言不同地处理这个问题我不太了解红宝石,但是:

  1. 在python中,人们使用virtualenv来分离依赖关系,这需要更多的努力。
  2. Maven of Java将缓存$HOME/.m2文件夹中的工件,但在编译项目时,他们会将这些字节码从.m2文件夹复制到本地文件夹target
  3. 对于npm install --global / grunt.js等工具,您有时间gulp.js

    我认为它与DRY无关,因为你没有两次编写代码。它刚刚下载了两次。

    话虽如此,你仍然可以全身心地安装一切。