angular - 指定“resolveJsonModule”:运行 ng-packagr 时为 true
问题描述
我被要求将我的 Angular 9 应用程序的版本作为 HTML 元数据的一部分。版本号来自
import { version } from '../../../package.json';
对于本地和 Azure DevOps 管道构建,我们使用 ng-packagr。
对于我的本地构建,我可以将 resolveJsonModule 添加到:node_modules\ng-packagr\lib\ts\conf\tsconfig.ngc.json:
"compilerOptions": {
...
"resolveJsonModule": true,
},
管道构建确实 npm install fresh 清除了 Azure 云构建服务器上 node_modules 中的所有条目。因此,我无法像在本地构建中那样修改云构建服务器上的 tsconfig.ngc.json。
Azure 管道构建步骤:
"packagr": "ng-packagr -p ng-package.json"
ng-package.json 内容:
{
"$schema": "./node_modules/ng-packagr/ng-package.schema.json",
"lib": {
"entryFile": "public-api.ts"
},
"dest": "...",
"whitelistedNonPeerDependencies": ["angular", "bootstrap", "font-awesome", "gojs", "wait-on", "jquery", "rxjs", "tslib", "uuid", "zone.js", "ngx-toastr", "watch", "onchange", "lodash", "hammerjs"]
}
我的一些不成功的尝试强制 ng-packagr 使用指定的 tsconfig.json 或 compilerOptions:
1)“您需要做的就是修改库文件夹下的tsconfig.lib.json。”
https://github.com/ng-packagr/ng-packagr/blob/HEAD/docs/override-tsconfig.md
我尝试在我自己的目录结构下添加 tsconfig.lib.json,然后将 tsconfig.lib.json 添加到我的 angular.json;但没有收到更改。不确定 github 文档是否意味着在 node_modules\ng-packagr... 下添加/修改 tsconfig.lib.json ;如果是这样:
a)我找不到 tsconfig.lib.json
b)即使我可以找到 tsconfig.lib.json,这个建议仍然会涉及修改 node_modules\ 目录下的内容,这会随着每个管道构建而消失。
2)https://github.com/ng-packagr/ng-packagr/blob/HEAD/docs/configuration-locations.md
我查看了ng-package.json的架构,但它不允许修改编译器选项:
https ://github.com/ng-packagr/ng-packagr/blob/master/src/ng-package.schema.json
3) “您需要通过命令行使用 -c 提供一个 tsconfig。”
https://github.com/ng-packagr/ng-packagr/issues/1131
我预计会出现错误:
错误 TS2732:找不到模块 '../../../package.json'。考虑使用“--resolveJsonModule”导入扩展名为“.json”的模块
不显示 -c tsconfig.app.json
ng-packagr -p ng-package.json -c tsconfig.app.json
并在没有 -c tsconfig.app.json 时显示。如果不更改 tsconfig.ngc.json,我什至无法在本地重现错误。
4)我还阅读了:
在 ng-packagr 中嵌入 json
https://github.com/ng-packagr/ng-packagr/issues/1050
如何将我的 tsconfig 文件与 ng-packagr 一起使用?
在 ng-packagr 构建中包含 json 文件
但我找不到足够的相关信息来解决我的特定问题。
谢谢你的帮助。
解决方案
您需要将配置文件传递给构建步骤:
"packagr": "ng-packagr -p ng-package.json --config tsconfig.lib.json"
tsconfig.lib.json 扩展了默认配置并添加了编译器选项:
{
"extends": "./node_modules/ng-packagr/lib/ts/conf/tsconfig.ngc.json",
"compilerOptions": {
"resolveJsonModule": true,
"esModuleInterop": true,
}
}
推荐阅读
- docker - 无法使用 docker 工具箱登录到 docker
- javascript - 如何保持 div 位置固定但仍应可滚动?
- node.js - 解析服务器上的 SSL
- python - 基类方法的动态更新
- python - 我应该如何解决这个问题 - 'int' 对象不可迭代?
- html - 如何通过vba将HTML span属性复制到excel
- java - jdbi版本3,stringtemplate何时转义<,>字符?
- excel - 为什么 SUMPRODUCT 中需要 Ctrl-Shift-Enter?
- sql - 如何在 6 天内检索数据
- syntax - 来自 ocaml 的嵌套 let 语法