SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

HTML/JavaScript開発作業を効率化する便利ツールの活用

Grunt連携や自作ライブラリ登録でパッケージ管理ツールBowerをもっと活用

HTML/JavaScript開発作業を効率化する便利ツールの活用 第4回

タスク実行ツールGruntとBowerの連携

 GruntはHTML/JavaScript開発を主なターゲットにしたタスク実行ツールです。ファイルのコピーやJavaScriptの最小化など様々なタスクを実行するプラグインを組み合わせて、定形処理を自動実行できます。

 Bowerとの連携機能もGruntのプラグインとして提供されます。Bowerの公式ページでは表1のプラグインが紹介されています。

表1 主なBower連携Gruntプラグイン
名称 機能
grunt-bower-task Bowerの機能をタスクとしてGruntから呼び出し
grunt-bower-concat BowerでダウンロードしたJavaScriptやCSSを結合
grunt-wiredep Bowerでダウンロードしたファイルへの参照をHTMLに挿入
grunt-bower-requirejs BowerコンポーネントをRequireJSの設定に反映
grunt-preen Bowerパッケージから不要なファイルやフォルダを削除

 今回はGruntからBowerのタスクを実行するgrunt-bower-taskプラグインを取り上げて説明します。

grunt-bower-taskプラグインでBowerのライブラリを自動インストール

 grunt-bower-taskプラグインは、GruntからBowerを実行してライブラリのインストールを行う機能を提供します。利用するにはプロジェクトフォルダでリスト3のコマンドを実行してプラグインをインストールします。

リスト3 grunt-bower-taskプラグインのインストール
npm install grunt-bower-task --save-dev

 なお、サンプルコードにはgrunt-bower-taskプラグインを含む使用パッケージを記述した設定ファイルpackage.jsonが付属しています。サンプルコードを展開したフォルダ内で「npm install」コマンドを実行すればGruntとプラグインが設定されます。

 grunt-bower-taskプラグインを利用する最もシンプルな設定ファイル(Gruntfile.js)記述をリスト4に示します。

リスト4 grunt-bower-taskプラグインを利用するGrunt設定ファイル(Gruntfile.js)
module.exports = function(grunt) {
    grunt.initConfig({
        // Bower install ...(1)
        bower: {
            install: {
            }
        }
    });

    // プラグインの読み込み ...(2)
    grunt.loadNpmTasks("grunt-bower-task");

    // タスク定義 ...(3)
    grunt.registerTask("default", ["bower"]);
};

 (1)でBowerによるライブラリのインストールタスクを定義しています。このタスクはBower設定ファイル(bower.json)に定義されたライブラリをインストールします。(2)はプラグインの読み込み、(3)は(1)のタスクをデフォルトのタスクに定義する記述です。

 bower.jsonファイルにはリスト5のようにライブラリを記述しておきます。ここでは本番環境用(dependencies)にBootstrapライブラリを、開発環境用(devDependencies)にHolder.jsライブラリを定義しています。

リスト5 Bowerライブラリの記述(bower.json)
"dependencies": {
    "bootstrap": "~3.3.5"
},
"devDependencies": {
    "holderjs": "~2.8.1"
}

 リスト4のGruntfile.jsとリスト5のbower.jsonを含むサンプルコードのフォルダで、コマンドプロンプトから「grunt」コマンドを実行すると、bowerタスクによりBootstrapとHolder.js、およびBootstrapが依存するjQueryのライブラリがダウンロードされて、bower-componentsフォルダとlibフォルダの配下に配置されます。配置先は後述のオプションで指定できます。

図2 GruntからBowerを用いてダウンロードしたBootstrap
図2 GruntからBowerを用いてダウンロードしたBootstrap

grunt-bower-taskプラグインのオプション

 grunt-bower-taskプラグインのinstallタスクには挙動を変えるオプションが指定できます。主なオプションを表2に示します。

表2 grunt-bower-taskプラグインの主なオプション
名称 意味 デフォルト値
targetDir ライブラリをコピーするターゲットフォルダ ./lib
cleanTargetDir タスク実行前にターゲットフォルダを削除 false
cleanBowerDir タスク実行後にBowerのフォルダ(bower_components)を削除 false
bowerOptions Bowerのインストール処理で指定するオプション引数 {}(指定なし)

 オプションはリスト6のように、JavaScriptオブジェクトoptionsで指定します。

リスト6 installタスクにオプションを指定する例(Gruntfile.js)
bower: {
    install: {
        options: {
            targetDir: "./bower_libs", ...(1)
            cleanTargetDir: true,      ...(2)
            cleanBowerDir: true        ...(3)
            bowerOptions: {
                production: true       ...(4)
            }
        }
    }
}

 リスト6のタスクを実行すると、(1)によりライブラリはbower_libsフォルダに格納されます。また(2)によりタスク実行前にbower_libsフォルダは都度削除され、(3)によりbower_componentsはタスク終了時に削除されます。(4)で本番環境用ライブラリだけをダウンロードするBowerオプションproductionをtrueに指定しているため、開発環境用ライブラリであるHolder.jsはダウンロードされません。

次のページ
Bowerに自作のライブラリを公開

この記事は参考になりましたか?

HTML/JavaScript開発作業を効率化する便利ツールの活用連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/8956 2015/10/01 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー