Ich brauche eine Anleitung, um wiederverwendbare commonjs-Bibliothek (npm-Paket) richtig zu entwickeln. Lets sagen, dass die Bibliotheksstruktur ist die folgende:Commonjs-Bibliothek index.ts als externes Modul
—lib
——Helper.ts
——Serialization.ts
——meta
——— Entity.ts
—index.ts
Und so weiter. Jede Datei ist ein externes Modul.
Jetzt muss ich Eintragsdatei erstellen (sagen Index.ts), die Funktionalität der Bibliothek verfügbar machen und als Einstiegspunkt dienen wird. Hier kann ich meinen Kopf nicht um den Weg wickeln, um es zu schaffen. Ich mag die verschachtelte Struktur halten, ohne es durch den Export alles Abflachen:
export * from './lib/Helper’;
export * from './lib/Serialization’;
export * from './lib/meta/Entity’;
…
Ursache wird diese logische Gruppierung entfernen und zu möglichen Namen in der Zukunft führen kann Konflikte
Ich habe auch versucht, Index zu haben. ts wie folgt aus:
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;
Es funktioniert perfekt, bis ich komme, um importierte Arten wie diese zu verbrauchen:
import Core from ’nameOfTheNpmPackage';
let Entity = Core.Meta.Entity;
function f(e: Entity)//<—This produce error cannot find name ‘Entity'
{
}
Da sie nicht in der Typdeklaration Raum sind (gibt es einen Weg, um sie dort zu kopieren, wenn sie nicht im Namensraum sind?)
Eine weitere Option, die ich versucht habe ist Single d.ts Datei für die gesamte Bibliothek zu erzeugen, indem mit outFile + amd. Diese Datei ist jedoch kein externes Modul.
Also meine Frage ist - wie ist es möglich, index.ts zu schreiben, so dass es externes Modul sein wird und alle Funktionalität von Bibliothek freigelegt exportieren.
Vielen Dank im Voraus.