Visual Studio 2013 で Bower を使う
Visual Studio 2013 で Grunt, Bower を使った運用ができるかなと思い試してみました。その手順を記載します。
参考サイトは 2015/1 に来日されるハンセルマンのブログから:Introducing Gulp, Grunt, Bower, and npm support for Visual Studio
VS 2013 で Grunt, Bower を使ってる図

所感
- VS からできるといっても今のところは CUI に近い感じ。
- 操作は VS 2015 の場合とほぼ同じ。
- パッケージを取得だけではなく配置まで細かく設定できるのは便利そう。
- Web Essentials と同じ匂いを感じます。(Mads Kristensen 氏が関係しているから?)
- Web Essentials 2015 では、コンパイラ等の node.js ベースのツールが取り外されるみたい。http://vswebessentials.com/changelog
まずは
ASP.NET における Grunt, Bower の概要については、ASP.NET 5 と Visual Studio 2015 では Bower と Grunt が標準になるみたいなので勉強してみた - しばやん雑記 をご確認下さい。
インストール
下記の環境を用意します。
- node.js
- Visual Studio 2013 Update 4
- 必須なのは Update 3 以上。
3 つの Visual Studio 拡張機能をインストールします。
コマンドプロンプトにて
コマンドプロンプトにて npm install grunt-cli -g を実行します。
参照(Task Runner Exporer の Prerequisites から)
Visual Studio にて
例として ASP.NET MVC のプロジェクトで試してみます。Polymer のパッケージを取得し、その中から Polymer.js を「Content」フォルダ内に配置します。
(Polymer は Bower によるインストールを推奨しています。)
プロジェクトを作成した後、3 つのファイル―「package.json」「gruntfile.js」「bower.json」を root 直下に作成し、下記のようにコードを記述します。

▼package.json(npm パッケージの定義)
{
"version": "0.0.0",
"name": "WebApplication97",
"private": false,
"devDependencies": {
"grunt": "~0.4.5",
"grunt-bower-task": "~0.4.0"
}
}▼gruntfile.js(Grunt タスクを書く)
module.exports = function (grunt) {
grunt.initConfig({
bower: {
install: {
options: {
targetDir: "Content ",
layout: "byComponent",
cleanTargetDir: false
}
}
}
});
grunt.registerTask("default", ["bower:install"]);
grunt.loadNpmTasks("grunt-bower-task");
}targetDir には、インストールしたライブラリを配置したいフォルダを指定します。
▼bower.json(Bower のパッケージを定義)
{
"name": "WebApplication97",
"version": "0.0.0",
"dependencies": {
"polymer": "Polymer/polymer#~0.5.1"
},
"exportsOverride": {
"polymer": {
"js": "polymer.js"
}
}
}exportsOverride で指定したコンテンツが、「gruntfile.js」のtargetDirで指定したフォルダに配置されます。省略可です。この設定については後述。
Json スキーマ設定
Json を記述する際は、インテリセンスがあると便利です。bower.js と package.json にて、上のバーにて次の値を設定します。
- bower.js : http://json.schemastore.org/bower
- package.json : http://json.schemastore.org/package
↓ここに設定

npm
「package.json」を右クリックし、「NPM install packages」をクリック。

インストールが完了すると、出力ウィンドウに下のように表示され、ソリューション内に「node_modules」フォルダが作成されます。

Task Runner Explorer から Grunt のタスクを実行
Visual Studio のメニューから「表示」>「その他のウィンドウ」>「Task Runner Explorer」をクリックし、Task Runner Explorer を表示します。
図の赤枠にある更新ボタンをクリックします。

すると gruntfile.js が読み込まれますので、図のように bower から「Run」をクリックします。

インストールが完了すると、右側にログが表示されます。

ソリューション内には、「bower_components」フォルダが作成されパッケージがインストールされています。ここで、「Content」と「boiwer_components」2つのフォルダを確認すると、双方に格納されているファイルが違うことがわかります。

この挙動は、先ほど npm install した grunt-bower-task によるものです。このあたりのパッケージの配置の設定については、こちらの記事が参考になります。 bowerでインストールしたファイルの配置を設定するにはgrunt-bower-taskが便利
以上、手順でした。
他
package.json, bower.json ではインテリセンスが効きます。

gruntfile.js の右クリックからの Run。
bower.json の右クリックからの Run。(この場合、grunt-bower-task は影響しないと思われる。)

他
もし何かエラーがおきた場合は、次の項目が参考になるかもしれません。必須かどうかは確認できず。
- PATH環境変数に「git」が登録してあるか
- node.js のバージョンが 0.10.22 以上であるか
- bower.json ファイルのエンコード指定
- bower.json を開く -> VS の「ファイル」>「名前を付けて bower.json を保存」>「エンコード付きで保存」Shift JIS