每当我做项目时,我必须下载节点模块的所有依赖项。在不复制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发布于 2015-04-22 11:59:25
你绝对可以在多个项目之间共享一个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在你的项目文件夹中找不到node_modules目录时,它会自动检查父文件夹。所以让你的目录结构像这样:
-myProjects
--node_modules
--myproject1
---sub-project
--myproject2因此,像这样,即使您的子项目的依赖项也可以在您的主node_modules存储库上绘制。
这样做的一个缺点是您必须手动构建您的package.json文件(除非有人知道使用grunt或其他工具自动执行此操作)。当您安装软件包并将--save arg添加到npm install命令时,它会自动将其附加到依赖项部分或您的package.json中,这很方便。
发布于 2018-06-12 01:44:02
尝试使用pnpm而不是npm。
pnpm使用硬链接和符号链接在磁盘上只保存一次模块的一个版本。
如果您安装了npm,则可以使用以下命令在终端中进行安装:
npm install -g pnpm要更新现有安装(和子目录),请使用:
pnpm recursive install或者使用速记命令(如果只需要针对一个目录,则关闭-r )
pnpm -r i一个有用的提示:,你可能会发现一些罕见的包并没有定义它们的所有依赖项。它们可能依赖于npm或yarn安装的平面node_modules文件目录结构。如果遇到缺少依赖项的问题,请使用以下命令将所有子依赖项提升到平面文件结构中:
pnpm install --shamefully-hoist最好避免使用--shamefully-hoist标志,因为它从一开始就违背了使用pnpm的目的,所以请先尝试使用命令pnpm i your-missing-package (请参阅pnpm FAQ)。
发布于 2016-06-01 22:47:11
我发现了一个窍门,只要看看Symbolic Links (symlinks) on Windows or Linux,它就像快捷键一样工作,但更强大。
你只需要在你想要的任何地方为你的node_modules文件夹创建一个Junction。交叉点只是您的原始node_modules文件夹的快捷方式。在您的项目文件夹中创建它,如果使用npm install,则会在该文件夹中创建实际的node_modules。
要实现这一点,你至少需要一个node_modules真正的文件夹,然后在其他项目中建立一个到它的连接。
在Windows上,可以使用命令提示符,也可以使用应用程序。使用命令提示符可以给你更多的控制,使用应用程序更容易,我建议使用Link Shell Extension。
https://stackoverflow.com/questions/29786887
复制相似问题