Как создать субмодули в проекте библиотеки Typescript? - PullRequest
0 голосов
/ 30 января 2019

Я создаю проект библиотеки с именем br-store , который я использую в других проектах с объявлениями импорта, подобными этому:

import { getAlarms } from "br-store"

В этомcase getAlarms - это экспортируемая функция, которая находится внутри src/store/alarm/actions.

Теперь я хочу достичь того, чтобы перенести мою библиотеку, чтобы я мог использовать ее где-либо еще таким образом, как этот:

import { getAlarms } from "br-store/alarm/actions"

Мой проект имеет следующую структуру папок:

./src/store/
├── alarm
│   ├── alarm-actions.ts
│   ├── alarm-constants.ts
│   ├── alarm-reducer.ts
│   └── index.ts
|__ index.ts
...... 

tsconfig.json :

{
  "compilerOptions": {
    /* Basic Options */
    "moduleResolution": "node",
    "target": "es6",
    "module": "commonjs",
    "sourceMap": true,
    "outDir": "./bin",
    "rootDir": "./src",
    "strict": true,
    "esModuleInterop": true,
    "noImplicitAny": false,
    "declaration": true
  },
  "include": [
    "src/**/*",
  ],
  "exclude": [
    "spec/*",
    "tests/*",
    "integration/",
    "node_modules/"
  ]
}

. / Src/store/index.ts:

export * from './alarm'
.....

/ src / store / alarm / index.ts

export * from './alarm-actions'
export * from './alarm-reducer'

1 Ответ

0 голосов
/ 30 января 2019

Я обычно советую избегать глубоких ссылок.

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

Если вы вручную управляете перенаправлениями:

// <project-root>/alarm/actions.js`
export * from '../dist/alarm/actions'

Это может быть нормально, потому что у вас все еще есть разумный контроль и свобода действий.Но это ручной шаг.

Если вы действительно хотите, чтобы tsc сделал это для вас автоматически, вы можете установить outDir: ".." и сделать так, чтобы он сбрасывал все ваши js-файлы в корень вашего проекта.

Но я думаю, вы не будете рады видеть, что ваш проект становится свалкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...