Angular 6 库:在 CI 管道中构建库以创建 lib 版本

Posted

技术标签:

【中文标题】Angular 6 库:在 CI 管道中构建库以创建 lib 版本【英文标题】:Angular 6 library: ng build library in CI pipeline to create lib release 【发布时间】:2018-11-07 21:56:54 【问题描述】:

我正在尝试构建一个用于 CI 集成的 Angular 6 库,而不是将其集成到 Angular 应用程序中。 (出于多种原因)

到目前为止我所做的是:

创建一个 package.json 以安装所有 lib 的依赖项 创建一个angular.json 像引用 ci 文件的常规 angular6 应用程序(见下文) 将所有ng-packages.\*.json 复制到ng-package.ci.\*.json 并更新它们的路径以引用正确的文件和目录(node_modules、entryfiles 等) 将所有ts-config.\*.json 复制到tsconfig.ci.\*.json 并更新它们的路径以引用正确的文件和目录(src、dist 等)

我希望通过运行 ng build 能够构建库,但我收到了以下消息:

@angular/compiler-cli 和 typescript 的版本不能 确定。

(但是所有的包都安装好了;我检查了两次)

有没有人尝试过在不使用应用程序内的库的情况下构建其 Angular 6 库?

谢谢

【问题讨论】:

【参考方案1】:

目前不可能,但这里有一个未解决的问题:

https://github.com/angular/angular-cli/issues/10751

【讨论】:

【参考方案2】:

我回复你的答案是因为我能够解决我所有的问题。

我现在能够在 CI 管道中构建(测试、lint)角度库 我可以将此库集成到 Angular 项目中。

这是我的做法。我在一个几乎空的目录中生成了一个库。 要执行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 ng build 通过将 angular.json 中的默认项目设置为 my-lib anf 指向 tsconfig 和 ng-package 在 ci 文件夹中

一个提示,根处的 package.json 需要具有来自新 Angular 应用程序的所有依赖项才能构建或测试库。

希望这个简短的解释会有所帮助。

【讨论】:

以上是关于Angular 6 库:在 CI 管道中构建库以创建 lib 版本的主要内容,如果未能解决你的问题,请参考以下文章

在子项目中获取gitlab父项目详情

在哪里指定 GitLab ci/cd 管道的存储库凭据?

如何调试在 CI/CD 管道中编译和打包的 Release NuGet 包?

触发 Gitlab CI/CD 管道以部署存储库的特定部分

如何在 Azure CI 管道中手动添加“脚本”?

为我的 GitLab-Server 上的每个存储库激活 CI/CD 管道