如何让Angular CLI引用其他目录下的node_modules文件夹?
复用已有Angular项目的node_modules到新项目
嘿,这个需求很好解决,核心就是让新项目能找到已有项目里的依赖库,给你两种实用的方法,按需选择就行:
方法一:创建符号链接(推荐,简单直接)
这种方式相当于给新项目的node_modules创建一个“快捷方式”,指向旧项目的依赖文件夹,步骤如下:
- 先确认两个项目的目录结构,比如假设你的
older-app在../older-app,sample-app在当前目录下。 - 根据你的操作系统执行对应的命令:
- Windows(命令提示符):
mklink /D node_modules ..\older-app\node_modules - Windows(PowerShell):
New-Item -ItemType Junction -Path .\node_modules -Target ..\older-app\node_modules - macOS/Linux:
ln -s ../older-app/node_modules node_modules
- Windows(命令提示符):
- 完成后,你在
sample-app里执行ng serve或者ng build时,Angular就会自动复用older-app里的依赖了。
方法二:通过环境变量指定依赖路径
如果不想创建软链接,也可以通过设置NODE_PATH环境变量,告诉Node.js去哪里找依赖:
- 直接在终端临时设置(每次打开终端都要重新设置):
- macOS/Linux:
export NODE_PATH=../older-app/node_modules # 之后再执行ng命令 ng serve - Windows(命令提示符):
set NODE_PATH=..\older-app\node_modules ng serve
- macOS/Linux:
- 或者把配置写到
package.json的脚本里,一劳永逸:
修改sample-app的package.json中的scripts部分:
之后直接运行"scripts": { "start": "NODE_PATH=../older-app/node_modules ng serve", "build": "NODE_PATH=../older-app/node_modules ng build" }npm run start或者npm run build就会自动加载指定路径的依赖了。
重要注意事项
- 一定要确保两个项目的Angular版本以及核心依赖版本一致!比如
older-app用的是Angular 15,那创建sample-app时最好加上--version 15参数,不然版本不兼容会出现各种奇怪的报错。 - 用软链接的时候,删除
sample-app的node_modules链接时,注意不要误删原older-app里的真实依赖文件夹(软链接只是快捷方式,删除链接不会影响原文件,但操作时还是要小心)。
内容的提问来源于stack exchange,提问作者codingsplash
相关产品推荐
相关产品推荐

