как подсластить путь вторичной точки входа ng-packagr при потреблении

Настройка общего компонента

У меня есть общий угловой компонент, в качестве вторичной точки входа которого используется набор утилит транспортира, чтобы упростить тестирование из приложения-потребителя. Мы не делаем монорепозиторий, поэтому репозиторий посвящен только этому конкретному общему компоненту. Мы распространяем этот общий компонент через npm, используя URL-адреса git. Вот примерно структура проекта:

-. (root folder)
 |-.dist
 | |- shared-component (distributables)
 |
 |-.projects
 | |
 | |-. shared-component (sources - library)
 | | |
 | | |-. e2e-utils
 | | | |- public_api.ts
 | | | |- package.json (2nd entry point)
 | | | |- ... (sources)
 | | |
 | | |-. src
 | | | |-. lib
 | | | | |- ... (sources)
 | | | |- public_api.ts
 | | |
 | | |- package.json (1st entry point)
 | |
 | |- test-harness (demo - application)
 |
 |- angular.json
 |- package.json
 |- tsconfig.json

in angular.json:

  • shared-component определяется как library
  • test-harness определяется как application

in package.json:

"files": [ "dist/shared-component" ],
"main": "dist/shared-component/bundles/shared-component.umd.js",
"module": "dist/shared-component/fesm5/shared-component.js",
"es2015": "dist/shared-component/fesm2015/shared-component.js",
"esm5": "dist/shared-component/esm5/shared-component.js",
"esm2015": "dist/shared-component/esm2015/shared-component.js",
"fesm5": "dist/shared-component/fesm5/shared-component.js",
"fesm2015": "dist/shared-component/fesm2015/shared-component.js",
"typings": "dist/shared-component/shared-component.d.ts",
"metadata": "dist/shared-component/shared-component.metadata.json",

in tsconfig.json:

"paths": {
  "shared-component": [
    "dist/shared-component"
  ],
  "shared-component/*": [
    "dist/shared-component/*"
  ]
}

Использование установки приложения

in package.json:

"dependencies": {
  ...
  "shared-component": "git+<git-url>#<version>"
  ...
}

in app.module.ts:

import { SharedComponentModule } from 'shared-component';

in some.e2e.test.ts:

import { E2EUtils } from 'shared-component/dist/shared-component/e2e-utils'

Вопрос

Как сократить приведенное выше до простого:

import { E2EUtils } from 'shared-component/e2e-utils'

Неверное решение

В приложениях-потребителях tsconfig.json и foreach используются совместно используемые ресурсы:

"paths": {
  ...
  "shared-component/*": [
    "node_modules/shared-component/dist/shared-component/*"
  ],
  ...
},

Мне не нравится это решение, потому что оно вынуждает добавлять дополнительную запись на каждый потребляемый пакет, что является накладным. Я хотел бы верить, что есть лучшее решение (раньше я ошибался).

Литература


person Renaud    schedule 04.04.2019    source источник
comment
Вы в конце концов нашли решение для этого?   -  person Dan R.    schedule 27.02.2020
comment
Это то, на чем мы сошлись, но с тех пор я больше к этому не возвращался.   -  person Renaud    schedule 27.02.2020