2013-04-19 32 views
5

Myślę, że byłoby miło bezpośrednio importować moduły z katalogu node_modules bez potrzeby ręcznego dostarczania pliku deklaracji (załóżmy, że deklaracja jest dostarczana z samym modułem). Domyślam się, że problemem są zależności, które pochodzą z deklaracjami (ścieżki plików mogą być rozwiązywane w odniesieniu do modułu, ale to spowoduje duplikaty i kompilator nie może tego obsłużyć). Obecnie praca z modułami węzłowymi jest bardzo niewygodna, ponieważ prosta instalacja z repozytorium npm nie wystarczy i musimy ręcznie wyszukiwać deklaracje i dostarczać je w naszym projekcie. Załóżmy, że nasz projekt jest zależny od 10 modułów węzłów (wszystkie mają deklaracje) i po roku chcemy je zaktualizować. Musielibyśmy ręcznie wyszukiwać nowe deklaracje i powiedzmy, że mamy około 20 takich projektów (stanie się to koszmarem). Może powinna być opcja bezpośredniego importowania pliku .ts z modułu węzła?Importowanie modułów Node.js npm (node_modules) i deklaracji w TypeScript

Czy masz jakieś sugestie?

Jest to re-post od CodePlex usłyszeć wasze opinie ...

+0

Łącze do wątku codeplex byłoby miłe. PS: Naprawdę nie dostaję tego, o co pytasz, rozwiązanie tutaj. – basarat

+0

Oto link do wątku CodePlex ... https://typescript.codeplex.com/discussions/440670 – jzvelc

Odpowiedz

1

Nie sądzę, że moduły węzeł będzie kiedykolwiek zawierają wbudowaną maszynopis wsparcia. Język wciąż jest wersją 0.x i oficjalnie opisany jako wersja alfa.

Mimo to istnieją środki ułatwiające proces konfiguracji maszynopisu. Github zawiera już ogromne zbiory .d.ts plików, takich jak:

https://github.com/borisyankov/DefinitelyTyped lub https://github.com/soywiz/typescript-node-definitions

Czasami warto przyjrzeć się tym narzędziem: https://github.com/Diullei/tsd. Nigdy go nie używałem, ale wygląda na to, że prawie to, czego szukasz.

Co więcej, słyszałem, że planowana jest oficjalna baza danych plików .d.ts. Niestety nie mogłem znaleźć linku, ale prawdopodobnie minie trochę czasu, zanim to wszystko zostanie zrealizowane.

+0

TSD wygląda ładnie i może po prostu być tym, czego potrzebujemy ... W jakiś sposób byłoby gread, że deklaracje mogłyby zostać rozwiązane z folderu node_modules. – jzvelc

2

Jeśli użyjesz maszynopisu, to otrzymam żądanie ściągnięcia, które rozwiąże to przynajmniej dla mnie. Zobacz https://github.com/k-maru/grunt-typescript/pull/36

z żądania ciągnąć README

Praca z modułami node_modules (tj NPM)

Standardowy sposób używać pakietów NPM jest dostarczenie plik definicji określający pakiet maszynopisu i zaimportuj moduł z tego miejsca.

///<reference path="path/to/mod.d.ts" /> 
import mod = module('mod') 

Kompilator maszynopis przekonwertuje import do nodejs require.

var mod = require('mod') 

Jest to dość nieporęczny jak trzeba znać dokładną ścieżkę do npm zainstalowanego pakietu i KMP można umieścić pakiet w prawie każdym poziomie podczas pracy z wieloma poziomami zależności.

Z opcją w grunt node_modules config można po prostu import pakiet npm bez konieczności znać dokładny poziom, przy którym pakiet został zainstalowany przez KMP o ile jest on zainstalowany lokalnie a nie globalnie.

Aby import moduł npm w źródle maszynopis zrobić

import npmModule = module('node_modules/npmModule/foo') 

głównie dzięki szczęśliwemu przypadkowi to działa. Kompilator maszynopisu będzie czytać plik definicji maszynopisu node_modules/npmModule/foo.d.ts, jeśli w pewnym momencie w drodze do katalogu głównego znajduje się , a wynikowy plik javascript będzie zawierał require dla .

Powiązane problemy