Мне нужно руководство, чтобы правильно разработать многоразовую библиотеку commonjs (пакет npm). Допустим, структура библиотеки следующая:
—lib
——Helper.ts
——Serialization.ts
——meta
——— Entity.ts
—index.ts
И так далее. Каждый файл - это внешний модуль.
Теперь мне нужно создать файл входа (скажем, index.ts), который будет раскрывать функциональность библиотеки и служить точкой входа. Здесь я не могу осмыслить, как это создать. Я хотел бы сохранить вложенную структуру, не сглаживая ее, экспортируя все:
export * from './lib/Helper’;
export * from './lib/Serialization’;
export * from './lib/meta/Entity’;
…
Потому что это приведет к удалению логической группировки и может в будущем привести к возможным конфликтам имен.
Я также пробовал иметь index.ts вот так:
import {Helper} from './lib/Helper';
import * as Serialization from './lib/Serialization';
import * as Decorators from './lib/meta/Decorators';
let core = {
Helper: Helper,
Serialization: Serialization,
Meta: {
Entity: Entity,
}
}
export default core;
Он отлично работает, пока я не начну использовать такие импортированные типы:
import Core from ’nameOfTheNpmPackage';
let Entity = Core.Meta.Entity;
function f(e: Entity)//<—This produce error cannot find name ‘Entity'
{
}
Поскольку они не находятся в пространстве объявления типа (есть ли способ скопировать их туда, если они не находятся в пространстве имен?)
Другой вариант, который я пробовал, - это создание одного файла d.ts для всей библиотеки с помощью outFile + amd. Но этот файл не является внешним модулем.
Итак, у меня вопрос - как можно написать index.ts, чтобы он был внешним модулем и экспортировал все функции, предоставляемые библиотекой.
Заранее спасибо.