我正在尝试构建一个用于CI集成的Angular 6库,而无需将其集成到Angular App中。
到目前为止,我所做的是:
- 创建一个package.json以安装所有lib的依赖项
- 创建一个引用 CI 文件的常规 Angular6 应用程序
angular.json
(见下文( - 复制所有要
ng-package.ci.*.json
ng-packages.*.json
并更新其路径以引用正确的文件和目录(node_modules、入口文件等(。 - 复制所有
ts-config.*.json
tsconfig.ci.*.json
并更新其路径以引用正确的文件和目录(src、dist 等(。
我期望通过运行ng build
能够构建库,但我有以下消息:
@angular/编译器-cli 和打字稿的版本不能 确定。
(但是所有软件包都已安装;我检查了两次(
有没有人尝试过在应用程序内不使用库来构建其 Angular 6 库?
感谢
目前不可能,但这里有一个悬而未决的问题:
https://github.com/angular/angular-cli/issues/10751
我回复你的回答,因为我能够解决我所有的问题。
- 我现在能够在 CI 管道中构建(测试、lint(一个角度库
- 我可以将此库集成到一个角度项目中。
这是我的做法。我在一个几乎为空的目录中生成了一个库。 要做到这一点ng generate library my-lib --skip-package-json --skip-ts-config
你需要有一个package.json文件,在这个目录中有一个angular.json文件。我从一个新的应用程序ng new app
中挑选了这些文件,并将应用程序引用从工作区删除到 angular.json(在项目部分(
生成库后,我在根目录ci
创建了一个文件夹,在那里我复制了文件tsconfig.*.json,karma.json,ng-package.json和package.json。我将原始文件保留在根目录下,以便能够以集成模式将库使用到应用程序中(只需要将 lib 引用添加到应用程序的 angular.json 中,就像它是在应用程序的 stconfig 中生成的 + 路径一样(
我更新了ci
文件夹中所有文件中的路径,以便能够运行以下命令,例如:
ng lint --format stylish --tslint-config ci/tslint.ci.json
- 通过将 angular.json 中的默认项目设置为
my-lib
anf 指向 ci 文件夹中的 tsconfig 和 ng-package 来ng build
一个提示,根目录的package.json需要具有来自新角度应用程序的所有依赖项,以便能够构建或测试库。
希望这个简短的解释会有所帮助。