typescript - Angular 6 库:在 CI 管道中构建库以创建 lib 版本
问题描述
我正在尝试为 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 库?
谢谢
解决方案
我回复你的回答是因为我能够解决我所有的问题。
- 我现在能够在 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
ng build
通过将angular.json中的默认项目设置为anfmy-lib
指向ci文件夹中的tsconfig和ng-package
一个提示,根处的 package.json 需要具有来自新 Angular 应用程序的所有依赖项才能构建或测试库。
希望这个简短的解释会有所帮助。
推荐阅读
- python - 如何为分类属性创建概率分布图?
- django - 同一行的插入正在发生,如果它已经存在于 DB Django-rest-framework,PostgreSQL 中,如何拒绝插入
- android - jTDS 中的长 SQL 语句失败
- javascript - 如果更改位置(目的地),谷歌地图 v3 无法读取未定义的属性“setOptions”
- php - 使用 curl 从站点获取一个号码,然后在我的应用程序中使用它
- git - 将我的项目提交到 github 时发生了一些错误
- regex - 正则表达式可选组(音乐标签)
- c# - 更改不会保存到 SQL Server 数据库
- html - 边距未应用于整个班级的多行文本
- android-architecture-components - 不使用 Room 更新 PagingLibrary 中的列表项(仅限网络)