2016-01-14 16 views
8

Obecnie mój proces obiektu jestKorzystanie WebPACK do generowania bibliotek maszynopisu z pisania plików

  • Napisz wiele plików maszynopis ze składnią modułu ES6
  • wygenerowania index.ts który reeksportu wszystkie moduły z jednego punkt
  • kompilacji do CommonJS + systemowe
  • deskryptor Wyjście/Wpisanie pliki

Powoduje to Plik index.js, który re-eksportuje wszystkie wewnętrzne pliki bez potrzeby używania dewelopera, a także wiele plików d.ts, które odzwierciedlają strukturę plików.

Teraz to działa, ale gdybym miał przyjąć to podejście do przeglądarki, musiałbym przesłać wszystkie pakiety js lub byłby to koszmar z prośbą o http ciągnący wszystkie pojedyncze pliki. Obecnie biblioteka ta będzie wykorzystywana jako zależność dla innych bibliotek, więc nie jest to punkt końcowy dla logiki ani niczego, co jest modułem/biblioteką.

Teraz główne pytanie dotyczy webpacka. Wiem, że mogę załadować TS i uzyskać moduł commonJS, jednak nie mogę znaleźć żadnego sposobu na wygenerowanie plików d.ts za pomocą pakietu internetowego. Czy istnieje sposób dla mnie, aby użyć pakietu internetowego jako kompilatora/pakietu w tym scenariuszu i mieć wyjściowy raczej niż bieżące podejście, które daje wiele pojedynczych plików.

== Extra Wyjaśnienie przypadek użycia ==

Wystarczy spróbować i upewnić się, każdy jest na tej samej stronie tutaj, kiedy mówię, że jest to biblioteka, która będzie ponownie wykorzystane, co mam na myśli to, że jest to coś, co zostanie załadowane przez npm lub jspm lub coś w rodzaju zależności modułów dla innych modułów.

Na przykład pozwól nam udawać, że jquery nie istnieje i mam zamiar go stworzyć, ale piszę go w pismach maszynowych, aby inni deweloperzy używali go zarówno w JS, jak i TS. Teraz maszynopis wypisuje zarówno pliki js, jak i pliki d.ts, pliki js mają być używane tak, jak się spodziewasz, ale pliki d.ts wyjaśniają innym plikom maszynopisów, jakie typy znajdują się w bibliotece.

Zakładając, że rozwinąłem jquery w TS jak wyżej, chciałbym opublikować to wyjście (czy to stworzone przez webpack lub tsc) na npm/jspm/bower itd. Więc inni mogą ponownie użyć tej biblioteki w swoich własnych projektach.

Pakiety internetowe zazwyczaj służą do pakowania "aplikacji", która zawiera logikę i obawy biznesowe, i jest bezpośrednio wykorzystywana jako punkt wejścia do większego zestawu problemów. W tym przykładzie byłby używany jako etap kompilacji i pakowania biblioteki i byłby używany przez var myLib = require("my-lib"); lub podobny.

+0

Co dla d.ts dla przeglądarki? Jak to będzie używane? –

+0

d.ts nie jest dla przeglądarki jest dla "biblioteki", jak wspomniano, cały ten projekt byłby zużyty jako biblioteka/moduł, więc d.Pliki ts są przeznaczone specjalnie do weryfikacji maszynopisu, więc gdybym chciał użyć typów w tej bibliotece w innym projekcie na maszynopis, potrzebowałbym pliku d.ts do opisania typów. Jakbym mógł sobie wyobrazić, czy pisałem jquery w maszynopisie i chciałem uzyskać pakiet webowy do przekonwertowania wszystkich plików maszynopisu do jednego pliku jquery.js do włączenia wszędzie, ale także do jquery.d.ts dla tych, którzy chcieli napisać maszynopis łącznie z typami w jquery. – Grofit

+0

Nie do końca rozumiem :) Ale najprawdopodobniej niemożliwe. O ile mi wiadomo, nawet stworzenie prostego pliku i skompresowanie wymaga dwóch konfiguracji i dwóch procesów. –

Odpowiedz

1

Generowanie plików .d.ts nie jest związane z pakietem sieci Web. Z pakietem internetowym możesz użyć programu ts-loader lub awesome-maszynopisu-programu ładującego. Obaj korzystają z tsconfig.json. To, co musisz zrobić, to dodać declaration: true do swojego urządzenia tsconfig.json.

Proponuję również, aby zapoznać się z typescript-library-starter. Znajdziesz tam konfigurację, w tym pakiet UMD i definicje typów :).

Powiązane problemy