2017-08-24 12 views
0

JSモジュール(はい、グローバルスコープ)なしで古いファッションアプリケーションを構築しています。コンパイラオプションoutFiledeclarationを使用して、すべての.tsソースを1つのプロジェクトにまとめ、1つをd.tsというファイルにまとめました。これは他のプロジェクトから参照しています。参照のないバンドルd.ts

私は@typesを利用し始めました。私はnode_modulesを私のプロジェクトのルートに移動しました。したがって、@typesvisibleです。自動的にロードされます。私は&のコピーをd.tsのすべてのプロジェクトからnode_modules\@types\にセットしました。これは私のプロジェクト間のクロスロード宣言にも役立ちます。甘い。

私のプロジェクトにはmoment.jsが含まれていましたが、何か不愉快なことが起こりました。このライブラリにはnode_modules\momentディレクトリに独自の宣言ファイルがあり、tscd.ts\\\ <references...というディレクティブに明示的なパスで追加します。これは明らかに他のコピー先へのコピー後に一致しません。

に外部参照を直接追加する場合は、参照番号ではなくコピーを使用して直接外部宣言を追加してください。そんなことはありますか?

+0

あなたが何を意味するのか「私は私のプロジェクトのルートにnode_modulesを移動しますか」? – gilamran

+0

@gilamran 'project'に' library'を交換することができます。私はプロジェクトが共通の概念であるVisual Studio(コードではない)で働いています。これは、コードを持つフォルダを意味します。これは、何らかの目的のために作成したもので、単一のプロジェクトとして動作します。だから "私のプロジェクトのルート"は自分のプロジェクトフォルダのルートを意味します。 – Vaclav

+0

これはmono-repoと呼ばれるものに似ています。あるフォルダには多くのプロジェクトが保存されています。 node_moduleをルートフォルダに置いてはいけません。それをそのまま各プロジェクトに残してください。各プロジェクトには独自の依存関係があります。 – gilamran

答えて

0

各プロジェクトに固有のnode_modules =>依存関係(@typesを含む)が必要です。

このようにして、依存関係を混在させません。この部分は、あなたがそれを体験したときに非常に重要です。

変更するたびに新しいバージョンを公開せずにすばやく作業できるようにするには、npm linkコマンドを使用する必要があります。それについてはhereを読んでください。 @typesについて

:活字体は、自動的にすべての@typesのサブフォルダをスキャンし、(あなたがtsconfigtypesを追加しない限り)オートはあなたの 『グローバル』モジュールは、それに依存してプロジェクトに利用可能であるべきことを意味し、それらを含んでいます。それについて読んhere

例マルチプロジェクト構造:

- project1 
    - node_modules 
    - @types 
     - project2 
     - moment 
     - lodash 
    - src 
    - main.ts 
    - tsconfig.json 

- project2 
    - src 
    - library.ts 
    - tsconfig.json 
+0

私の問題はIDEの開発中に宣言をロードすることだけで、各プロジェクトフォルダ内の宣言で分離された 'node_modules'を保守したくありません。私はtypescriptの自動 '@ types'ローディングの機能を利用しています。そうでなければ' node_modules'はまったく必要ありません。 '\\\ Vaclav

+0

'npm'を使って' moment 'をインストールしたときに問題が起きました。 'npm'を使いたくない場合は問題ありません...' npm'を使いたい場合は、問題が発生します... – gilamran

+0

本当に必要なのは、自分のプロジェクトごとに自分の '@ types'宣言をビルドし、他のプロジェクトの宣言をロードすることです。私は現在、そのようにする方法を調べています。 – Vaclav

関連する問題