Angular 多项目管理
今天,我们谈谈,怎么使用 Angular
来管理多个项目呢?
在平常的开发中,我们一个项目建立一个仓库,不仅维护起来难,而且那个
"无穷大"
的node_modules
也太尴尬了吧,多个项目多份node_modules
,要是同类型的项目,使用同份node_modules
就好了 🥺
Demo
测试环境:
- MacBook Air (M1, 2020)
- Visual Studio Code - 版本: 1.83.1 (Universal)
- http-server - ^14.1.1
初始项目
我们通过 NG-ZORRO 来初始化名为 jimmy-demo
项目。那么,我们就可以在 package.json
上看到默认的启动和构建命令行:
{
"scripts": {
"start": "ng serve",
"build": "ng build"
}
}
实际上,它等同于运行了👇:
{
"scripts": {
"start": "ng serve jimmy-demo",
"build": "ng build jimmy-demo"
}
}
我们怎么知道它是默认运行了 jimmy-demo
项目呢?
这个问题的答案,我们可以通过查找 angular.json
文件来解答。
angular.json
就是默认导出了该项目:
"defaultProject": "jimmy-demo"
很好,现在我们知道了,我们运行 ng serve
是运行导出的默认的文件。运行 ng serve jimmy-demo
是运行执行的 jimmy-demo
文件。
我们来看看 build
之后的目录结构,如下:
是的,这个导出的目录,也可以在 angular.json
中找到答案:
"outputPath": "dist/jimmy-demo"
整个的 angular.json
文件见项目初始化默认的 angular.json 文件
我们简单 run
一下打包文件:
http-server -p 8081 dist/jimmy-demo
多项目配置
👌,上面我们已经知道了,是通过配置 angular.json
文件实现了项目的运行和打包等。
那么,我们有没有发现,整个默认的项目,配置的文件,其实都是放在字段 projects
下面。
哦😯,那么我们可以通过在 projects
下面配置另外一个项目不就行了吗?
在开始前,我们先看看项目 jimmy-demo
下的文件:
嗯~,我们参考该目录结构做下调整,并添加一个名为 app01
和 app02
的项目,并把默认的项目放在 app01
。调整后的 jimmy-demo
目录如下:
然后我们更改下 app01
在 angular.json
中文件,完整的文件见 app01 项目的 angular.json 文件
然后更改下 app01/tsconfig.app.json
的路径指向:
/* To learn more about this file see: https://angular.io/config/tsconfig. */
{
"extends": "../../tsconfig.json", // ./tsconfig.json 更正
"compilerOptions": {
"outDir": "../../out-tsc/app", // ./out-tsc/app 更正
"types": []
},
"files": [
"src/main.ts",
"src/polyfills.ts"
],
"include": [
"src/**/*.d.ts"
]
}
然后我们重新启动项目:
ng serve app01
看到的效果和项目初始化的一样:
呀呀呀~试验成功!
那么,我们依瓢画葫芦,在 angular.json
中进行配置项目 app02
(感兴趣的读者自行尝试)。
然后我们再更改下 package.json
的启动命令行:
{
"script": {
"startApplication": "ng serve $APPLICATION",
"start:app01": "APPLICATION=app01 npm run startApplication",
"start:app02": "APPLICATION=app01 npm run startApplication",
"buildApplication": "ng build $APPLICATION",
"build:app01": "APPLICATION=app01 npm run buildApplication",
"build:app02": "APPLICATION=app02 npm run buildApplication",
}
}
我们打包这两个项目 npm run build:app01
和 npm run build:app02
,得到 dist
内容。
最后,我们模拟下发布查看:
http-server -p 8081 dist/app01
http-server -p 8082 dist/app02
效果如下动图:
参考
转载自:https://juejin.cn/post/7292024625793417270