* Grunt [#z3c7e7bf]
#setlinebreak(on)

#html(<div style="padding:0px 0px 10px 10px;">)
SCSS や minify などを行うWebクライアント(js、css) 用のビルドツール
ファイルの監視機能によりminifyなどの自動化が行える。
#html(</div>)

#contents
-- 関連
--- [[Gulp]]

** インストール [#oaec1616]
#html(<div style="padding-left:20px;">)

*** Node.js インストール [#oaec1616]
https://nodejs.org/ から node.js をインストール

*** grunt-cli インストール [#j73bb05f]
#myterm(){{
npm install -g grunt-cli
}}

*** プロジェクト用ディレクトリを作成し移動 [#j31149be]
#myterm(){{
mkdir example_grunt
cd example_grunt
}}

*** package.json の作成 [#k3fb1b03]
#myterm(){{
npm init
}}
※聞かれる質問は全部 [Enter] 押下でも良い。

*** プロジェクトフォルダ配下に grunt をインストール [#i7a848c7]
#myterm(){{
npm install grunt --save-dev
}}
※インストールが成功すると配下に node_modules フォルダが出来る。

*** プラグインの一括インストール [#h82960a0]
#myterm(){{
npm install grunt-contrib --save-dev
}}
※grunt-contrib-sass などのように個別にインストールも可能。

#html(</div>)

** Gruntfile.js の作成 [#r75eea9b]
#html(<div style="padding-left:20px;">)

Gruntの設定ファイルは、JSON形式で記述する。

*** 例)ログを出力するだけのデフォルトタスク [#te2cf60b]
#mycode(){{
module.exports = function(grunt) {
    grunt.registerTask('default', 'testlog', function() {
        grunt.log.write('test log!!!').ok();
    }); 
}; 
}}

*** 例)js、cssのminify [#i5dc7871]
#mycode(){{
module.exports = function(grunt) {

    // タスク定義
    grunt.initConfig({
        concat: {
            files: {
                src : 'js/*.js',
                dest: 'js-all.js'
            }   
        },  
        uglify: {
            dist: {
                files: {
                    'js-all-min.js': 'js-all.js'
                    // 'js-all-min.js': 'js/*.js'                              // concat と minify を一気に行う事も可
                    // 'js-all-min.js': ['js/test1.js', 'js/test2.js']   // 配列でファイルを複数指定も可
                }   
            }   
        },  
        cssmin: {
            css : { 
                src  : 'css/*.css',
                dest : 'css-all-min.css'
            }   
        },  
        watch: {
            js: {
                 files: 'js/*.js'
                ,tasks: ['concat', 'uglify']
            },  
            css: {
                 files: 'css/*.css'
                ,tasks: ['cssmin']
            }   
        }   
    }); 

    // プラグインの読み込み
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('grunt-contrib-uglify');
    grunt.loadNpmTasks('grunt-contrib-cssmin');
    grunt.loadNpmTasks('grunt-contrib-watch');

    // デフォルトタスクの指定
    grunt.registerTask('default', ["watch"]);
}; 
}}

#html(</div>)

** 実行方法 [#r75eea9b]
#html(<div style="padding-left:20px;">)

*** デフォルトタスクの実行 [#q7f3d5be]
#myterm(){{
grunt
}}

*** タスク名を指定して実行 [#q98bf48e]
#myterm(){{
grunt watch
}}
#html(</div>)

トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS