我怎样才能让多个项目共享node_modules目录?

每当我做项目,我都必须下载节点模块的所有依赖关系。 如果不复制node_modules,是否有共享多个项目中的中央node_modules?

像下面这样,我每次都要运行很多命令。

npm install gulp-usemin npm install gulp-wrap npm install gulp-connect npm install gulp-watch npm install gulp-minify-css npm install gulp-uglify npm install gulp-concat npm install gulp-less npm install gulp-rename npm install gulp-minify-html 

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

节点的文档

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

如果在那里没有find,那么它会移到父目录,依此类推,直到到达文件系统的根目录。

例如,如果'/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 ---sub-project --myproject2

所以就像这样,甚至你的子项目的依赖关系也可以在你的主要node_modules存储库上绘制。

这样做的一个缺点是你将不得不手动构build你的package.json文件(除非有人知道用grunt或其他方法自动化这个)。 当你安装你的软件包并将–save arg添加到npm install命令时,它会自动将它附加到dependencies部分或package.json,这很方便。

我发现了一个窍门,就是看看Windows或者Linux上的符号链接(符号链接) ,它就像快捷键一样工作,但function更强大。

只需要为你的node_modules文件夹build立一个Junction

为了达到这个目的,至less需要一个node_modules实体文件夹,然后在其他项目中build立一个Junction。

在Windows上,您可以使用命令提示符或使用应用程序。 使用命令提示符给你多一点控制,使用应用程序更容易我build议链接shell扩展 。

假设有一个node_modules,它应该包含所有应用程序的所有包。 因此你的应用程序也将分享大部分独特的package.json条目(只是名称应该改变)

我的想法是有一个单一的根和多个src级别如下

 root\package.json root\node_modules root\\.. root\app1\src\\.. root\app2\src\\.. 

你可能面临的唯一问题是为任何应用程序备份json(或tsconfig),并在处理它时恢复它们,或设置启动脚本来为任何应用程序提供服务