7

私は一連の VSTS 拡張機能に取り組んでいます。各拡張機能は、独自の小さな Node プロジェクトでpackage.jsonあり、独自のnode_modulesフォルダーがあります。フォルダ構造は次のとおりです。

 - MyExtension
   - package.json // containing all dev-dependencies
   - tslint.json
   - Tasks
     - tsconfig.json
     - Common
       - common.ts    // containing functioanlity shared across tasks
       - package.json // containing all runtime dependencies for all projects
     - My1stTask
       - package.json // containing all prod-dependencies
       - task.ts      // containing task implementation
     - ...
     - ...
     - My6thTask
       - package.json // containing all prod-dependencies
       - task.ts      // containing task implementation

VSTS ビルド タスクが機能する方法は、完全に自己完結型である必要があるということです。これまでのところ、Commonプロジェクトの内容を各タスクにコピーし、実行tscしてすべてを JavaScript に変換することで、これを修正しました。

これは悪いことではありませんが、Common の内容を常にコピーして何かをテストする必要があります。

ローカル ファイル参照を使用してみました。各タスクの package.json に依存関係を追加しましたfile:../common。これは開発時に機能しますが、拡張機能の生成後に共通モジュールがタスクの一部になることはありません。

私のバックグラウンドはノード開発ではなく、C# です。あちこち検索しましたが、vsts-extensions でうまく機能するソリューションが見つかりませんでした。

  • npm pack拡張機能はすべてのファイルがそこにあることを期待しているため、機能していないようです。
  • package.json/bundleDependencies有望に見えますが、ローカルファイル参照をバンドルしていません。
  • ///<reference path="../common/common.ts"/>編集にはうまく機能しますが、拡張機能をビルドした後も実行できません。
  • prepend を使用したプロジェクト参照は機能しません。ビルド タスクには commonjs モジュール リゾルバーが必要です。システムと AMD がモジュールをロードできません。Prepend は後者でのみ機能します。

これを「シームレス」に機能させる方法はありnode_modulesますか?

4

3 に答える 3

0

個々のモジュールを生成する代わりに、各タスクの出力として単一のファイルを生成する (および互換性のあるモジュール ローダーを使用する) ことに満足している場合は、オプションでプロジェクト参照を使用できる場合があります。prepend

複数ファイルの出力が必要な場合は、TypeScript の提案と考えられる回避策について、この質問を参照してください。

于 2018-08-20T21:19:43.390 に答える