Отправляйте ресурсы вместе с вашей библиотекой angular

Я создаю библиотеку компонентов angular , используя рабочее пространство NX. Банкомат Я использую загрузчик файлов. Этот загрузчик будет содержать изображение (svg), которое должно быть включено в библиотеку / пакет.

Все решения, которые я нахожу в Интернете, требуют, чтобы пользователь библиотеки обновил свои angular.jsonраздел приложений . Для меня это абсолютно недопустимо. Вот некоторые ресурсы, которые я нашел для объяснения этого:

Я уже изменил свой ng-package.json, добавив assets поле:

      {
  "$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, которая делает это за вас, но тогда любой, кто создает приложение (стиль рабочего пространства angular), которое использует эту библиотеку, вероятно, не сможет использовать эту схему.

Кто-то еще (в ссылке на github) также упоминает, что некоторые решения работают только для приложений в той же рабочей области NX, что, конечно же, никому не помогает.

Меня озадачивает, почему ресурсы, предоставляемые библиотеками, не работают сразу после установки или без изменений в приложении-потребителе. Вы также можете доставить их через USB-флешку ... Я бы не отказался предоставить угловую схему.

Кроме того, я бы предпочел создать значок через css, чем пользователю приходилось обновлять файлы самостоятельно, но я все же хотел бы знать, есть ли хорошее решение для этого.

Есть ли у кого-нибудь опыт, как с этим бороться на профессиональном уровне?

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"
],
Другие вопросы по тегам