Angular 2+如何构建特定模块?多模块项目按需编译问询
在Angular 2+多模块应用中仅构建特定模块的方法
当然有办法搞定这个需求!Angular CLI本身就支持针对特定模块进行构建,完全不用先编译所有模块再去清理无用的chunk,下面给你两种最实用的方案:
方案一:用Angular CLI的--module参数直接指定目标模块
如果只是需要单独构建某一个模块(比如你的module b),可以直接用这条命令:
ng build --module=b
这里的b可以是模块类的名称,也可以是模块文件的相对路径(比如src/app/b/b.module.ts)。
不过如果要同时构建多个模块(比如b和c),这个参数就不够用了,推荐用下面的自定义配置方案。
方案二:在angular.json中配置多项目构建目标
这个方案适合需要频繁给不同客户交付不同模块组合的场景,步骤如下:
- 打开项目根目录下的
angular.json,找到projects节点下的主项目配置(比如my-app) - 复制一份主项目的配置,重命名为适合客户场景的名称,比如
my-app-client-bc - 在新配置的
architect -> build -> options里,修改两个关键配置:main:指定专门为b+c模块准备的入口文件(比如src/main-bc.ts)tsConfig:指定对应的TypeScript配置文件(比如tsconfig.bc.json,可以复制主配置后微调)
- 创建
src/main-bc.ts,在里面只导入并启动包含b和c模块的根模块(比如AppModuleBC)——这个根模块里只需要声明、导入b和c模块,完全不用管a模块 - 之后要构建b+c模块组合时,直接运行:
ng build my-app-client-bc
额外注意事项
- 如果你的模块是通过路由懒加载的,一定要在自定义的根模块里只注册需要的路由,这样Angular打包时只会生成这些路由对应的chunk,不会包含a模块的代码
- 要是你只是想排除某一个模块(比如排除a),也可以在
angular.json的build -> options -> exclude里添加该模块的路径,但这种方式不如直接指定需要的模块精准,更适合临时快速排除的场景
内容的提问来源于stack exchange,提问作者rahul cp
相关产品推荐
相关产品推荐

