<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Build &#8211; Mach3.laBlog</title>
	<atom:link href="https://blog.mach3.jp/tag/build/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.mach3.jp</link>
	<description></description>
	<lastBuildDate>Thu, 21 Mar 2013 01:56:11 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>コーダーさんの為のGrunt入門（前編）〜導入編</title>
		<link>https://blog.mach3.jp/2013/03/21/gruntjs.html</link>
		
		<dc:creator><![CDATA[mach3]]></dc:creator>
		<pubDate>Thu, 21 Mar 2013 01:56:11 +0000</pubDate>
				<category><![CDATA[Laboratory]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Grunt.js]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[Tools]]></category>
		<guid isPermaLink="false">http://blog.mach3.jp/?p=3048</guid>

					<description><![CDATA[以前はmakeを使って納品用のデータをビルドしていたりしたのですが、 去年くらいから代替にGruntを使ってみています。 この度0.3.xから0.4系に切り替えたので、覚書も兼ねてGruntの導入・使い方を記しておきます [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>以前はmakeを使って納品用のデータをビルドしていたりしたのですが、 去年くらいから代替にGruntを使ってみています。 この度0.3.xから0.4系に切り替えたので、覚書も兼ねてGruntの導入・使い方を記しておきます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://lh3.googleusercontent.com/-InKstkN_iLo/UUl5hpVLk2I/AAAAAAAACAg/zGNCjzkb8f0/s400/20120320-00.png" alt="コーダーさんの為のGrunt入門（前編）〜導入編"/></figure>



<p></p>



<span id="more-3048"></span>



<ol class="wp-block-list">
<li>Gruntってなに</li>



<li>Gruntを導入する</li>



<li>使ってみよう</li>



<li>どんなタスクがあるの？</li>



<li>その他Gruntの魅力</li>



<li>まとめ</li>
</ol>



<h2 class="wp-block-heading">Grunt ってなに</h2>



<figure class="wp-block-image"><img decoding="async" src="https://lh4.googleusercontent.com/-cQXlXiOFRt0/UUl5hobAbMI/AAAAAAAACAg/9MA4u_DNuj0/s500/20120320-01.png" alt="GRUNT: The JavaScript Task Runner"/></figure>



<p></p>



<ul class="wp-block-list">
<li><a href="http://gruntjs.com/">GRUNT: The JavaScript Task Runner</a></li>
</ul>



<p>Gruntはnode.jsベースで作られたタスクベースのコマンドラインビルドツールです。</p>



<h3 class="wp-block-heading">ビルドツールってなに</h3>



<p>ビルドは、ソースファイル群を元にして、実行出来る成果物を生成するプロセスの事を指します。</p>



<p>cf) <a href="http://goo.gl/jZUQU">ビルド (ソフトウェア) &#8211; Wikipedia</a></p>



<p>鍋に鶏と野菜とコンソメを入れて煮込んだらポトフが出来るとして、 鍋の役割を担ってくれるのがビルドツールです。（そんな認識であっているかな？） レシピを設定しておくことが出来るので、いつでもすぐに美味しいポトフがお楽しみ頂けます。</p>



<p>具体的には、Web制作では主にJavaScriptファイルを結合・圧縮したり、 Less/Sass/Stylus等のCSSプリコンパイラの結果を生成したり、 画像の最適化などを行い、最終的に動作するWebページにしていきます。</p>



<h2 class="wp-block-heading">Gruntを導入する</h2>



<h3 class="wp-block-heading">インストール</h3>



<p>まずはGruntを導入してみます。node.jsベースなのでまず node.jsをインストールし、</p>


<pre class="wp-block-code"><span><code class="hljs">$ npm install -g grunt-cli
</code></span></pre>


<p>等とします。環境によってはsudo等が必要です。</p>



<p>grunt-cli はローカルにインストールされたgruntを呼び出すだけの係の人なので、 別途gruntも入れておく必要があります。プロジェクトルートか、あるいはその親ディレクトリにインストールしておきましょう。</p>


<pre class="wp-block-code"><span><code class="hljs">$ npm install grunt
</code></span></pre>


<h2 class="wp-block-heading">使ってみよう</h2>



<h3 class="wp-block-heading">Gruntfile.js</h3>



<p>プロジェクトディレクトリに <em>Gruntfile.js</em> ファイルを用意して設定を記述し、 そのディレクトリで <em>grunt</em> コマンドを実行するとビルドが始まります。</p>



<p>Gruntfile.js の中身は、例えば次のようになります。</p>


<pre class="wp-block-code"><span><code class="hljs language-javascript"><span class="hljs-built_in">module</span>.exports = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">grunt</span>)</span>{

    <span class="hljs-comment">// `loadnpmTasks`で使用したいタスクを読み込んでおく</span>
    grunt.loadNpmTasks(<span class="hljs-string">"grunt-contrib-uglify"</span>);

    <span class="hljs-comment">// `initConfig` で基本設定</span>
    grunt.initConfig({
        <span class="hljs-attr">uglify</span> : {
            <span class="hljs-attr">dist</span> : {
                <span class="hljs-attr">src</span> : &#91;<span class="hljs-string">"assets/js/script.js"</span>],
                <span class="hljs-attr">dest</span> : <span class="hljs-string">"assets/js/script.min.js"</span>
            }
        }
    });

    <span class="hljs-comment">// `registerTask` でタスクに名前をつける</span>
    <span class="hljs-comment">// "default" でデフォルトのタスクを設定</span>
    grunt.registerTask(<span class="hljs-string">"default"</span>, &#91;<span class="hljs-string">"uglify"</span>]);

};
</code></span></pre>


<h3 class="wp-block-heading">タスクについて</h3>



<p>Gruntに命令する処理を「タスク」と呼びます。</p>



<p>上の例では&#8221;uglify&#8221;というタスクに、&#8221;dist&#8221;という作業を任せています。 &#8220;uglify&#8221;は<a href="https://github.com/mishoo/UglifyJS">uglify.js</a> を使用してJavaScriptの圧縮を行なってくれるタスクで、 &#8220;src&#8221; にあるファイルリストをひとまとめにして圧縮した結果を &#8220;dest&#8221; のファイルに保存します。</p>



<p>タスクははじめから入ってるわけではないので、 使いたい物を都度インストールしましょう。</p>


<pre class="wp-block-code"><span><code class="hljs">$ npm install grunt-contrib-uglify
</code></span></pre>


<h3 class="wp-block-heading">ビルドの実行</h3>



<p>上の例ではデフォルトのタスクにuglifyが設定されているので、引数なしで</p>


<pre class="wp-block-code"><span><code class="hljs">$ grunt
</code></span></pre>


<p>とすればタスクが実行され、assets/js/script.js を圧縮した結果が assets/js/script.min.js として保存されます。</p>



<p>タスクを指定して実行したい場合は、引数にタスクの名前を渡します。</p>


<pre class="wp-block-code"><span><code class="hljs language-xml">$ grunt uglify # <span class="hljs-symbol">&amp;lt;</span>= uglifyタスクを実行
$ grunt uglify:dist # <span class="hljs-symbol">&amp;lt;</span>= minタスクのdistという名前の作業を実行
</code></span></pre>


<h2 class="wp-block-heading">どんなタスクがあるの？</h2>



<p>以下が代表的だと思しきプラグインです。 （&#8221;contrib&#8221; とついている物は公式のものです。） 使いたい物を npm install でインストールし、 <em>loadNpmTasks</em> で読み込んで使用しましょう。</p>



<ul class="wp-block-list">
<li><a href="https://github.com/gruntjs/grunt-contrib-concat">grunt-contrib-concat</a> &#8211; ファイルを結合します</li>



<li><a href="https://github.com/gruntjs/grunt-contrib-uglify">grunt-contrib-uglify</a> &#8211; JavaScriptファイルを圧縮します</li>



<li><a href="https://github.com/gruntjs/grunt-contrib-cssmin">grunt-contrib-cssmin</a> &#8211; CSSファイルを圧縮します</li>



<li><a href="https://github.com/gruntjs/grunt-contrib-watch">grunt-contrib-watch</a> &#8211; ファイルの更新を監視して任意のタスクを実行します</li>



<li><a href="https://github.com/gruntjs/grunt-contrib-copy">grunt-contrib-copy</a> &#8211; ファイルやディレクトリをコピーします</li>



<li><a href="https://github.com/gruntjs/grunt-contrib-clean">grunt-contrib-clean</a> &#8211; ファイルやディレクトリを削除します</li>
</ul>



<p>具体的な設定例等は、各リポジトリのREADMEをご覧ください。 また、その他にも多くのタスクがあるので使えそうな物があったらピックアップしてみるといいでしょう。</p>



<ul class="wp-block-list">
<li><a href="http://gruntjs.com/plugins">Plugins &#8211; Grunt: The JavaScript Task Runner</a></li>
</ul>



<h2 class="wp-block-heading">その他Gruntの魅力</h2>



<p>なんといっても、JavaScriptベースである為にプラグイン開発が非常に身近にある点だと思います。</p>



<p>cf) <a href="http://gruntjs.com/creating-tasks">Creating tasks &#8211; Grunt: The JavaScript Task Runner</a></p>



<p>JavaScriptに心得のある人ならば、自分が使いやすいようなタスク・プラグインを自前で開発して、 自分好みの開発環境を構築していく事が出来ます。 また、その為に便利なインターフェイスも十分整備されています。 有用なプラグインが書けたら、npmにパブリッシュしておけばいつでも使えますね。</p>



<p>まさにnode様様といったところです。</p>



<h2 class="wp-block-heading">まとめ</h2>



<p>Grunt の概要をざっくり紹介しました。</p>



<p>これだけではそこまで有用と思われないかもしれませんが、 多くのコーダーさんにとって威力を発揮するのは、やはりCSSプリコンパイラのビルドだと思います。 後編ではそのあたりを紹介してみます。</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
