Ser*_*gey 2 angular-cli monorepo angular ng-packagr
我的 Angular monorepo 项目中有几个应用程序。我还编写了大约 5 个库以在应用程序中使用。
我想知道的是如何更好地构建/架构这些库。
ins如下:
projects文件夹中使用)lodash和RxJs到目前为止我所做的:
umdModuleIds每个库的ng-package.json。peerDependencies在外部库上指定,例如lodash和RxJsprebuild大约 5 个命令ng build lib-nameimport { cloneDeep } from 'lodash'现在我看到我的main.js块比将一些服务/组件/功能提取到外部库之前大得多。现在main.jsprod build 的大小是 2.1 Mb,在我看来这太大了。
另外,我不确定是否值得为每个库(UMD、FESM2015、FESM5)制作 3 个不同的版本。
我从 dist 文件夹中导入库,因为它在文档中推荐的遵循下一个表单import { LibService } from 'lib'。
Nrwl工具由 Angular 核心贡献者开发,专门研究企业架构,包括单一存储库。
Nrwl nx-examples是一个很好的入门资源。
我开始使用nx来构建一个新项目。最后,我的项目结构如下:
platform-directory/
|
---apps/
| |
| ---app1/
| |
| ---app2/
|
---library1/
| |
| ---src/
|
---library2/
| |
| ---src/
|
---angular.json
|
---package.json
|
---README.md
|
---tsconfig.json
Run Code Online (Sandbox Code Playgroud)
如果需要,顶层tsconfig.json应包含应用程序和库的大部分全局配置以及paths快捷方式。
路径快捷方式可以配置如下:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "./",
"declaration": false,
"downlevelIteration": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"importHelpers": true,
"module": "esnext",
"moduleResolution": "node",
"sourceMap": true,
"target": "es6",
"lib": [
"es2018",
"dom"
],
"paths": {
"@app1*": [
"./apps/app1/src/app*"
],
"@lib1/package1": [
"./lib1/src/package1/public_api.ts"
],
"@lib1/package2": [
"./lib1/src/package2/public_api.ts"
],
...
}
Run Code Online (Sandbox Code Playgroud)
在应用程序中,可以直接从库源中导入库代码,例如:
import { MyLibraryComponent } from '@lib1/package1'
Run Code Online (Sandbox Code Playgroud)
由于您不发布库,因此无需构建它们。当您在应用程序代码上运行 Angular 编译器时,库代码将根据需要自动包含和优化。
重要提示:在每个库中,不要使用路径快捷方式导入文件,因为这会导致难以调试的循环依赖。例如,在lib2它里面可以使用:
import { MyLibraryComponent } from '@lib1/package1'
Run Code Online (Sandbox Code Playgroud)
但是,如果在 中使用此导入lib1,则会创建循环依赖项。
作为旁注,每个应用程序都有一个tsconfig.app.json和tsconfig.spec.json如下所示:
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc/apps/app1"
},
"include": [
"src/**/*.ts"
],
"exclude": [
"test.ts",
"**/*.spec.ts"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7327 次 |
| 最近记录: |