typescript - Kreirajte podmodule za uvoz iz biblioteka u NX slično kao @angular/material


Uspješno sam premjestio svoj kod u biblioteke u svom NX workspaceu. Međutim, imam neke biblioteke koje su prilično velike (utilities) s brojem malih funkcija. Stoga bih želio moći razbiti import na manje module, slično kao @angular/material koji ima import za svaku komponentu (button, card, itd.).

Imam sljedeću strukturu za primjer:

-utilities
    -src
        -lib
            +date-time
            +file-types
            +functions
        index.ts

Ako je moj index.ts:

    export * from './lib/date-time/convert-hours-minutes-to-minutes';
    export * from './lib/date-time/date-time-formats';
    export * from './lib/date-time/get-date-for-end-of-week';

    export * from './lib/functions/api-log-mode';
    export * from './lib/functions/database-log-mode';
    export * from './lib/functions/delete-from-array';
    export * from './lib/functions/field-value-list';
    export * from './lib/functions/format-bytes-for-users';

    export * from './lib/file-types/json-wrapper/json-wrapper';
    export * from './lib/file-types/microsoft-excel-wrapper/excel-js-wrapper';
    export * from './lib/file-types/xml-wrapper/xml-wrapper';

Mogu pristupiti svim metodama koje želim, ali one su sve uvezene u jednom bloku:

import { DateTimeFormats, ApiLogMode } from '@my-lib/utilities';

Međutim, želio bih to razdvojiti na manje linije uključivanja kada nešto koristi mnogo funkcija iz biblioteke. U tom slučaju, želio bih koristiti uvoz poput:

import { DateTimeFormats, GetDateForEndOfWeek } from '@mylib/utilities/date-time';

U svakoj mojoj mapi unutar lib (date-time, functions itd.) uklonio sam index.ts iz ./lib direktorija i pokušao koristiti i index.d.ts i index.ts u svakoj mapi, bez ikakve sreće.

date-time/index.ts (or index.d.ts)
    export * from './lib/date-time/convert-hours-minutes-to-minutes';
    export * from './lib/date-time/date-time-formats';
    export * from './lib/date-time/get-date-for-end-of-week';

file-types/index.ts (or index.d.ts)
    export * from './json-wrapper/json-wrapper';
    export * from './microsoft-excel-wrapper/excel-js-wrapper';
    export * from './xml-wrapper/xml-wrapper';

Ovo mi još uvijek ne omogućuje uvoz onako kako bih želio. Znam da bih to mogao podijeliti u još više biblioteka u NX radnom prostoru, ali želim verzionirati svoju veću biblioteku za općenitiju uporabu u našim projektima, tako da bi velika 'utilities' biblioteka (1.8.x) bila uključena u naše aplikacije i održavana neovisno.

Povezani članci