2013-04-19 11 views
5

node_modulesディレクトリから直接モジュールをインポートすると、宣言ファイルを手動で提供する必要はありません(モジュール自体で宣言しているとしましょう)。私は問題は宣言(ファイルパスはモジュールに対して解決される可能性がありますが、それは重複を引き起こし、コンパイラはそれを処理できません)と一緒に来る依存関係だと思います。 npmリポジトリからの単純なインストールだけでは不十分で、手動で宣言を検索してプロジェクトに提供する必要があるため、ノードモジュールでは非常に不便です。私たちのプロジェクトが10のノードモジュールに依存しているとしましょう(すべて宣言しています)、1年後に更新したいとします。新しい宣言を手動で検索し、このような約20のプロジェクトがあるとしましょう(悪夢になるでしょう)。おそらく、ノードモジュールから.tsファイルを直接インポートするオプションが必要ですか?Node.jsのnpmモジュール(node_modules)とTypeScriptの宣言をインポートする

ご意見はありますか?

これは私がノードモジュールは、これまでビルトイン含まれることtypescriptですサポートとは思わない...

+0

codeplexスレッドへのリンクが良いでしょう。 PS:ここでは解決策を求めているものは実際には得られません – basarat

+0

ここにCodePlexスレッドへのリンクがあります。 https://typescript.codeplex.com/discussions/440670 – jzvelc

答えて

1

あなたの意見を聞くためのCodePlexからの再投稿です。言語は依然として0.xリリースであり、公式にはアルファバージョンとして記述されています。

しかし、typescriptの設定プロセスを簡単にする手段があります。 https://github.com/Diullei/tsd:あなたはこのツールを見てみることをお勧めします

https://github.com/borisyankov/DefinitelyTyped または https://github.com/soywiz/typescript-node-definitions

:githubのは、すでになど.d.tsファイルの膨大なコレクションが含まれています。 私はそれを使ったことはありませんが、あなたが探しているもののようです。

また、.dtsファイルの公式データベースが計画されていると聞いています。残念ながら私はリンクを見つけることができませんでしたが、これがとにかく実装されるまでにはおそらく時間がかかるでしょう。

+0

大変似ています私たちが必要とするもの...どうにかして、node_modulesフォルダから宣言を解決することができます。 – jzvelc

2

grunt-typescriptを使用している場合は、少なくとも私のためにこれを解決するプルリクエストがあります。

NPMパッケージを使用する標準的な方法はtypescriptですにパッケージを指定する定義ファイル を提供することであるnode_modules内のモジュール(すなわちNPM)とを使用した作業プルリクエストREADME

からhttps://github.com/k-maru/grunt-typescript/pull/36

を参照してください。そこからモジュールをインポートしてください。

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

typescriptですコンパイラはnodejs requireimportを変換します。

var mod = require('mod') 

あなたは依存関係の複数のレベルで作業しているとき NPMインストールパッケージとNPMへの正確なパスは、ほとんどすべての レベルでパッケージを置くことができます知っておく必要があるので、これはかなり扱いにくいです。configコン作男でnode_modulesオプションで

することができます パッケージは限りそれはローカル なくグローバルにインストールされているようNPMによってインストールされた正確なレベルを知る必要なく、ただ import NPMパッケージ。 import

あなたtypescriptですソース内のNPMモジュールは、主によるこの作品ラッキーチャンスに

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

を行います。タイプスクリプト定義ファイルnode_modules/npmModule/foo.d.ts がルートに向かって途中に存在し、結果として得られる javascriptファイルには、npmModule/fooの場合は必要に応じてrequireが含まれます。

関連する問題