1

継続的インテグレーション (CI) 環境にビルドしてデプロイし、開発、ステージング、ライブに自動デプロイするビルド サーバーがあります - すべて TFS ビルド定義を使用します。

ビルド サーバーでは、Dust でダウンロードしたユーティリティ (dustc) を使用して、(デプロイ手順の前に) Dust テンプレートをコンパイルする必要があります。Visual Studio 内でローカルに実行すると、Visual Studio (VS) がフォルダー node_modules に開始されると、Dust がダウンロードされますが、このフォルダーは通常チェックインされません (そうしないと、多数のクライアント側ライブラリとバージョンがすぐに管理オーバーヘッドになります)。

Dust は npm 経由でダウンロードされます (私は v3.5.2 を使用しています)。私が理解しているように、npm を使用してダウンロードするモジュールをダウンロードする標準的な方法は次のとおりです。

  • ローカルに (VS 内で) NuGet 経由で npm をダウンロードします。これにより、プロジェクトに含まれてチェックインされた npm.cmd を含むプロジェクト (".bin") のルートにフォルダーが作成されます。
  • 次に、ソリューション/プロジェクトの成果物がダウンロードされた後のビルド サーバーで、NuGet パッケージがダウンロードされます (npm を含む)。
  • 最後に、次のコマンドを送信します (この場合、VS ビルド後のタスクに含まれていますが、NuGet パッケージがダウンロードされた後であれば、すべて問題ありません)。

    cd "$(ProjectDir)"
    call "$(ProjectDir)\.bin\npm.cmd" install dustjs-linkedin --save-dev
    

最終結果は、Dust がプロジェクト構造 (node_modules フォルダー内) にダウンロードされ、Dust テンプレートをコンパイルするコマンドを発行できるようになるはずです。

ただし、問題は npm が NuGet 経由でダウンロードされた場合、npm フォルダー構造が大量にネストされているため、Windows パスの 260 文字の制限を超えていることです ( https://github.com/nodejs/node-v0.x-archive/issues/6960 ) - その結果、ジョブが npm を実行して Dust をダウンロードする前に、ビルドが失敗します (注: TFS フォルダーの長さを短くしましたが、npm はビルド名、プロジェクトなどを分割する余地がほとんどありません。たとえば、 .../packages/Npm.3.5.2/node_modules/npm/node_modules/npm-install-checks/node_modules/npmlog/node_modules/are-we-there-yet/node_modules/readable-stream/node_modules/core-util -is/lib は約 170 文字です)

Node npm windows file paths are too long to install packagesを読んだことがありますが、verion 3.x の使用、または npm-flatten/dedupe の使用を示唆していますが、まだ問題があります - 主に失敗するのは NuGet ステップであるためです - npmで何でもできるようになる前に

解決策は、必要なファイルのみを選択することです (つまり、npm から、またはおそらくより簡単な [しかし柔軟性が劣る] ダスト ファイル [dustc など] のみ) をソース管理に含め、NuGet には npm を含めません。しかし、これは厄介です。チェックインしたファイルが更新された場合 (よくあることですが)、すべてがそのままで実行されていることを確認する必要があります。

よりクリーンな方法はありますか?

4

2 に答える 2

1

パスの長さの制限は本当に厄介ですが、最も効果的で簡単な方法は、ファイル/フォルダー構造を微調整してこれを機能させることです。

例:の代わりに(または\xx\Build\Drop\ProjectNameを使用します。これは、プロジェクト名がビルド名にも含まれているためです。\xx\Build\Drop\xx\Builds

TFS の長いパスの問題については、関連するユーザーの声があり、現在完了しています。

260 文字のファイル名の長さ制限を修正

基本的なファイル操作機能 (CRUD) の BCL から制限を取り除きました。詳細については、次を参照してください。

https://blogs.msdn.microsoft.com/dotnet/2016/08/02/announce-net-framework-4-6-2/

Immo Landwerth プログラム マネージャー .NET

于 2017-01-02T08:40:27.993 に答える
0

次の手順を参照して、結果を確認してください。

  1. Node.jsをビルド サーバーにインストールする
  2. npm 構成ファイルをプロジェクト (package.json) に追加し、チェックインします。
  3. ビルド定義を開く
  4. npmステップを追加 ここに画像の説明を入力
  5. キューの構築
于 2017-01-03T03:27:54.233 に答える