TypeScriptプロジェクトを構築する別の方法

TypeScriptについてはあまり説明しません。 私の意見では、これは、以前はJavaScriptに欠けていたプログラミング機能を提供する、確立され確立された技術です。 私の意見では、この言語の最も基本的な機能は、より明確なOOPと厳密なタイピングです。 そして、これらの資質のために私はこの言語に恋をし、それが私のプロジェクトに調和して適合しました。



それはすべて、プロジェクトを変更するたびにコマンドラインでコンパイラーを呼び出し、プロジェクトを再構築したことから始まりました。 それはひどく不便で、開発を非常に遅くしました。 うなり声については、私の問題を解決するgrunt-ts拡張機能があり、しばらくそれを使用しました。 TypeScriptコンパイラには1つの機能(バグや適合性ではなく、政治的正当性)がありますが、これは私が試したすべての拡張機能で考慮されていませんでした。 これはひどく邪魔をし、コードを書くことを余儀なくされました。 grunt-tscgruntの拡張機能であり、TypeScriptでプロジェクトをビルドできます。



コンパイラの特性は、依存関係を持つ1つのファイルをコンパイルすると、コンパイルされたファイル自体のコードと、依存関係で指定されたすべてのファイルが出力ファイルに入ることです。 うなり声の通常のケースは1対1のファイルをコンパイルすることだからです。 そして、プロジェクトをコンパイルするときに、* .jsファイル(一般的な依存関係を持つコンパイルされたアナログ* .ts)の山が必要な場合、出力ファイルに大量のゴミ(本質的に不要な多くの重複コード)が発生することがわかりました。 その瞬間、私が決断を書き始めたとき、コンパイラのそのような機能を修正した既製のコードを見つけることができませんでした。 私はアイデアウォッチャーでハックを見ました(おそらくそれはどこかに文書化されていましたが、見つかりませんでした)また、オプション「--out」では機能しません。



例から、すべてがすぐに明らかになります:



tsc --out ./utils/deferred/Deferred.js ./utils/deferred/Deferred.ts
      
      





そのような使用は、ファイルDeferred.jsにすべての依存関係が含まれているという事実につながります。本質的には、これらを個別にコンパイルし、他のファイルに含めたいと思います。



 cd ./utils/deferred && tsc Deferred.ts
      
      





しかし、たとえば、この使用によりこの問題は解消され、依存ファイルのチェックはそのままで、Deferred.tsのみが出力ファイルDeferred.jsにコンパイルされたコードを含みます。



これが私が必要とするものであることが判明し、私は自分の決定を書きました。 このソリューションには優れた能力はなく、コンパイルの問題を正しく解決するだけです。 また、コンパイラバージョンを選択する機能がgruntモジュールに追加され、TSCグローバルインストールへの依存関係が排除され、* .d.ts依存関係を指定するより柔軟な方法が追加されました。



グローバルな依存関係を排除し、コンパイラーのバージョンを選択する



拡張機能自体は、デフォルトでは、グローバルTSCインストールに依存しません。 コンパイラはモジュール内にあり、モジュールをインストールする以外に何も必要ありません。 モジュールには、コンパイラーのバージョンを指定できるoptions.versionオプションがあります。 次の値(作成時)を設定できます:「1.0」、「1.1」、「1.3」、「1.4」、「デフォルト」(1.3)、「最新」(1.4)。 さまざまなバージョンのサポートは私にとって非常に便利なようで、たとえば、古いプロジェクトで古いバージョンのコンパイラに依存している場合に実装されました。



さらに、 options.compilerオプションを使用してパスを指定することにより、コンパイラを明示的に指定できます。 これを使用すると、 options.versionオプションは無視されます。 たとえば、システムにインストールされたコンパイラを引き続き使用する場合は、オプションを「/usr/local/lib/node_modules/typescript/bin/tsc.js」に設定する必要があります。 はい、非常に重要なポイントがあります。オプションは* .jsファイルを指す必要があります。



依存関係を指定する



依存関係には3つのオプションがあります。





残りの拡張オプションはコンパイラオプションを繰り返しているので、簡単に理解できますが、それらについては説明しません。 構成オプションの総数は非常に多くなりますが、これは恐ろしいことではありません。これはすべてオプションであり、コンパイルはデフォルト値で開始されます。



拡張機能はそのタスクを正しく実行し、新しい機能を追加する価値はないようです。 追加したいのは前処理命令だけですが、ソースマップに影響を与える可能性があるため、これをより正確に行う方法を考えています。 TypeScriptも開発中であり、最新バージョンのコンパイラをサポートします。 この拡張機能が誰にとっても有用であれば、私は非常に嬉しく思います。また、レビューも喜んでいます。



TypeScript公式ウェブサイト

グローブエクステンション

Grunt-TSC拡張



All Articles