1

我正在使用 NX 工作区构建一个角度组件库。ATM 我正在​​实现一个文件上传器。此上传器将包含一个图像 (svg),该图像应包含在库/包中。

我在互联网上找到的所有解决方案都要求图书馆的消费者更新他们的angular.json应用程序部分。对我来说,这是绝对不行的。以下是我找到的一些资源来解释这一点:

我已经通过添加以下assets字段修改了我的 ng-package.json:

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/libs/example-ng-bootstrap",
  "assets": ["./assets"],
  "lib": {
    "entryFile": "src/index.ts"
  }
}

尝试添加

"targets:build:options:assets": [
  "libs/example-ng-bootstrap/src/assets"
]

到 lib angular.json 部分(project.json - NX angular.json V2 样式),它根本不构建。

尝试以下 ng-package.json 配置:

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/libs/example-ng-bootstrap",
  "assets": ["/dist/libs/example-ng-bootstrap/lib/assets"],
  "lib": {
    "entryFile": "src/index.ts"
  }
}

在包含的链接中,它确实解释了如何构建一个为您执行此操作的 NX 原理图,但是任何构建使用此库的应用程序(角度工作空间样式)的人都可能无法使用此原理图。

其他人(在 github 链接中)也提到某些解决方案仅适用于同一 NX 工作区中的应用程序,这当然也无助于任何人。

我很困惑为什么库提供的资产不能开箱即用,或者不修改消费应用程序。您也可以通过 USB 记忆棒传送它们……不过,我可以提供一个角度示意图。

另外,我宁愿通过css设计图标,而不是消费者必须更新自己的文件,但我仍然想知道是否有一个好的解决方案。

有没有人有经验如何以专业的方式处理这个问题?

编辑

似乎很难找到有关如何使用 NX 构建和发布角度示意图的信息,但这似乎是一个有用的链接

4

1 回答 1

1

这是我的决赛ng-package.json

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/libs/mycompany-ng-bootstrap",
  "lib": {
    "entryFile": "src/index.ts"
  },
  "assets": [
    "./src/assets/**",
    "./src/styles/**",
    "./_bootstrap.scss"
  ]
}

将 dist 文件发布到 NPM 后,我可以引用angular.json

"styles": [
  "node_modules/@mintplayer/ng-bootstrap/_bootstrap.scss",
  "src/styles.scss"
],
于 2022-01-12T09:08:19.547 回答