在多个项目中共享node_modules目录

时间:2019-05-17 06:22:25

标签: angular

我是angular的新手,我想使用node_modules,假设它们存在于D:\ MySampleProject中,并且我也想在E:\ TestProject中使用相同的node_modules。不使用npm install(我使用过'mklink / j node_modules'(它不起作用)是否有任何可能的方法。请对此提供帮助。

1 个答案:

答案 0 :(得分:0)

您绝对可以在项目之间共享一个node_modules目录。

来自节点的文档:

  

如果传递给require()的模块标识符不是本机模块,   并且不以“ /”、“../”或“ ./”开头,则节点从   当前模块的父目录,并添加/ node_modules,以及   尝试从该位置加载模块。

     

如果在此处找不到它,那么它将移至父目录,然后   以此类推,直到到达文件系统的根为止。

     

例如,如果位于“ /home/ry/projects/foo.js”的文件   require('bar.js'),则节点将在以下位置查找   此命令:

     

/home/ry/projects/node_modules/bar.js /home/ry/node_modules/bar.js   /home/node_modules/bar.js /node_modules/bar.js

因此,只需将node_modules文件夹放入项目目录中,然后放入所需的任何模块即可。像平常一样要求他们。当节点在您的项目文件夹中找不到node_modules目录时,它将自动检查父文件夹。因此,使目录结构像这样:

-myProjects

-node_modules

-myproject1

---子项目

-myproject2

这样,即使子项目的依赖项也可以在主node_modules存储库中使用。

以这种方式进行操作的一个缺点是,您将必须手动构建package.json文件(除非有人知道使用grunt或其他方式自动执行此操作的方法)。当您安装软件包并将--save arg添加到npm install命令时,它将自动将其附加到dependencies部分或您的package.json,这很方便。