web-dev-qa-db-ja.com

Visual StudioのJavaScriptプロジェクトタイプ?

Visual Studioソリューションの複数のプロジェクトで使用されるJavaScriptライブラリの作成を伴うタスクがあります。理想的には、JavaScriptコードでC#クラスライブラリのように動作するプロジェクトタイプを見つけたいと考えています。

  • それはJavaScriptコードをいくつかの出力**。js *ファイルに「コンパイル」(縮小、Closureでチェック、...)します
  • この出力は、他のプロジェクトから「参照」される可能性があります。 ASP.NET MVCプロジェクトによる
  • プロジェクトの「ビルド順序」を指定できます(標準のVS機能)

これはVS 2010/11で可能ですか、それともBAT/PowerShellファイルをいくつか記述して自分でスクリプト化する必要がありますか?

同様ですが少し異なる質問: JavaScript/VBScriptのVisual Studioプロジェクトテンプレート?

49
Borek Bernard

Asp.Net MVCの開発経験に基づいて、Visual StudioはJavaScriptのサポートを制限しています。私はあなたが望む行動を模倣するためにあなたができることがあると思います:

  1. ビルドイベントをサポートしている限り、JavaScriptファイルを保存するプロジェクトを作成します。これはおそらく重要ではないクラスライブラリプロジェクトです。 JavaScriptファイルを新しいプロジェクト内に配置します。

  2. このプロジェクトでビルド後のステップを作成し、外部ツールを使用してJavaScriptを最小限に抑えます。 YUI Compressor を使用します。ビルド後のステップには、次のような行が含まれている必要があります。

    Java -jar $(ProjectDir)Scripts\yuicompressor-2.4.7.jar $(SolutionDir)Scripts\yourJsFile.js -o $(SolutionDir)Scripts\yourJsFile.min.js --charset utf-8

  3. この新しいプロジェクトをソリューションに含めます。次に、Asp.Netプロジェクトについて、JavaScriptファイルを参照するようにActive Server Pagesを設定します。ここでは例としてRazor構文を使用しています。ただし、正しいパスを特定するのは難しいかもしれません。

@if (@Model.IsDebug)
{
<script src="@Url.Content("~/Scripts/yourJsFile.js")"  type="text/javascript"> </script>
}
else
{
<script src="@Url.Content("~/Scripts/yourJsFile.min.js")"  type="text/javascript"></script>
}

ここでも、Asp.NetプロジェクトからJavaScriptファイルを正確に参照できるようにするのは難しいかもしれません。しかし、私はそれを行う方法があると確信しています。おそらく、ビルド後のステップでJavaScriptファイルをいくつかの一般的な場所にコピーすることができます。これを行う場合は、JavaScriptプロジェクトのビルド後イベントを「常に実行」としてマークすることもできます。これにより、JavaScriptファイルが常にコピーされます。

9
Bojin Li

良い質問です(+1)。私の決定は、すべてのjavascript一般ファイルを別個のjavascriptプロジェクトに入れ、web/mvcプロジェクトで必要なjsファイルに リンクされたファイル を使用することでした。

このようにして、JavaScriptプロジェクト側からsubversioningコントロールを使用したり、使用可能なすべてのツールを使用して、個別の一般的なプロジェクト側からjsファイルを圧縮およびマージしたりすることができます。

7
Saulius

本当に気になります!誰か他の/より良いアイデアを思いついたら@コメントしてください。

オプション1:Web Essentialsを使用したASP.NET Webプロジェクト

フロントエンドのjavascriptプロジェクトだけが必要な場合、これは簡単なオプションです。 Web Essentials は、Visual Studioで簡単に使用およびインストールできます。これを使用すると、簡単に縮小できます。その後、テストにQunitを使用できます。これは、JavaScriptクライアント側開発へのかなり簡単で軽量なエントリーポイントです。

オプション2:Visual Studio用のNode.jsツール

Node.js Tools for Visual Studio を使用します。それはあなたにこれらの良いものの多くのためのプロジェクトテンプレートを与えるでしょう。特にクライアント側のjsライブラリを作成しているだけの場合は、node.jsを使用しない可能性がありますが、node.jsがあるとテストに役立ち、npmに元の回答で述べた他のすべての優れた機能をインストールする必要があります/必要になります(オプション3)。

これに関わるセットアップはたくさんあります。これは、一部の.NET開発者にとって、参入障壁となる可能性があります。

オプション3:Webサイトプロジェクト

これが私が過去にやったことです:

enter image description here

私は実際にEclipseで このプロジェクト を作成しました! (私を憎まないでください)。その後、Webサイトプロジェクトを使用してVisual Studioソリューションを作成しました。確かに不要なnode.jsをインストールしましたが、軽量のWebサーバーとして使用していました。

次に、NugetまたはBowerを使用して、次のようなものをインストールできます。

  1. require.jsモジュール管理用
  2. jasmine単体テスト用
  3. gruntまたはgulpビルドの場合(縮小)
  4. jslintまたはjshintをインストールしてコードを修正できます。

これらすべてが必要なわけではありません。 BowerはVisual Studio 2015に統合されていると思います。これらのいくつかはコマンドラインビルドを必要としますが、一度設定すると実行するコマンドはほとんどありません。

3
Jess

Pre-build/pos-build(タスクランナーエクスプローラーでは実際には必要ありません)にアクセスする場合は、空のASP.net Coreプロジェクトを作成します(node_modulesフォルダーが非表示になり、ファイルがプロジェクトに自動的に配置されます(コピーするだけで、手動で追加する必要はありません。しかし、これはobjとbinフォルダーを生成しますが、これは煩わしい場合があります。wwwfolderでプロジェクトをビルドすると、Visual Studioからpublishコマンドを使用できるようになります。

上記のいずれも気にしない場合、共有C#プロジェクトは出力を生成しないため、javascriptプロジェクトを作成するのに適したテンプレートです(私はすべてのvue spaプロジェクト)ここでの欠点は、ファイルのネストが機能しないことです= \

0
JCKödel