Nodejs npmに関しては、私は少しn00bですが、いくつかの記事で推奨されている手順を使用してビルド環境に実装したため、ビルド時間が3倍になりました。
標準的なもの(minify/concat/etc js/css/etc)に使用します
TeamCityを使用し、Node.js NPMステップを追加してから、タスクを実行するためのgulpステップを追加しました(RE: https://github.com/jonnyzzz/TeamCity.Node )
NPMをセットアップするタスクは、最も時間がかかり、2分10秒です。これは、各ビルドですべてのパッケージを再ダウンロードするように見えるコマンド「npminstall」を呼び出す合計ビルド時間の65%以上です
ステップ3/7:NPMセットアップ(Node.js NPM)(2m:10s)
[npm install]開始:cmd/c npm install
以前の合計ビルド時間は、単体テストを含めて約1分30秒でした。
これらをローカルにキャッシュし、ビルドごとに再ダウンロードしないようにする方法はありますか?ビルドフォルダとは対照的に、ユーザープロファイルまたは何かに?
詳細..
これはおそらくセットアップを最もよく説明しています http://www.dotnetcurry.com/visualstudio/1096/using-grunt-gulp-bower-visual-studio-2013-2015
新しいタスクランナーエクスプローラーを使用しているC#プロジェクトがあります。これにより、依存関係がpackage.jsonに保存されます。これにより、ワークスペースのローカル環境で「npminstall」を1回事前実行します(これを防ぐには.tfignoreを使用する必要があります)チェックインからソースへ)、新しいローカルワークスペースを開始しない限り、再度ではありません。
ビルドを実行すると、コマンドラインから「npm install」を実行する必要があり、package.jsonファイルから依存関係を取得して、ファイルが既に存在する場合でも、毎回ビルドの作業ディレクトリ内のサブフォルダーにインストールします。以前のビルドから(つまり、TCエージェントがクリーンアップしていない)、作業フォルダーの外にインストールすることはできません。
私は間違っている可能性があります...または私が間違っていることを願っています、そしてこれをサポートするためのgulpの方法を探していますが、それを機能させる方法はタスクランナーエクスプローラーと連携する必要があるため、F5エクスペリエンス開発者はまだ彼らのローカルで同じです。
はい、複数のエージェントがいます。
これを修正するために私が見つけた最善の方法は、ノードモジュールフォルダをバックアップ/復元することでした。ここでそれについてのブログ投稿を行いました。
https://beerandserversdontmix.com/2016/06/04/teamcity-and-avoiding-redownloading-of-npm-packages/
Node.jsについてはわかりませんが、TeamCity固有の提案をいくつか示します。
%TEMP%
にダウンロードしますか?その場合、TeamCityエージェントが%TEMP%
ディレクトリをハイジャック(<TeamCity Home>/buildAgent/temp/buildTmp
にリダイレクト)し、新しいビルドが行われるたびに常にこのディレクトリを完全に消去するため、後続のTeamCityビルド間で再利用できなくなります。 (buildTmp
ここ を参照)。%TEMP%
およびその他の場所)を単純にクリーンアップして、TeamCityにある程度の余裕を持たせるのが最善です。「緩い」パッケージバージョンを使用していない場合、これが問題になる可能性があります。 npm install [email protected]
のようなものを指定できますが、その場合は常に古いバージョンのままになり、開発者がビルド対象を頻繁に変更している場合は、ビルドシステムがチャーンします。
Packages.jsonでは、*と〜を使用して、3。*や〜2.5などのワイルドカードバージョンを定義できます。これにより、3.0.2や3.0.99などの3.xの「マイナー」リビジョンを取得できます。 2.5.xのどのバージョンでもインストールできますが、2.6.0ではできません。