Re:Start

いまはディレクターやってます

メンテナブルJavaScript 第III部 自動化より

さてさて、どんどん面白くなってきております、この本。
ついに自動化の章までやってきました。

正直、JSに自動化なんぞやー?というレベルの私にはもってこいの内容でした。
生まれて初めて図書館で2時間集中してしまいました。珍しい…

というのも、返却日だったんですよね。返却日駆動おすすめですが、途中でタイムアップという残念な結果になりました。だだんッ!
さて、今回も覚え書きを残しておきます。

13章 ファイルとディレクトリの構成

13.1 best practice

  • 1オブジェクト1ファイル
  • 関連するファイルをディレクトリに集める
  • サードパーティのコード分離
    チェックインせずにCDNから直接ロードするほうが理想的な設定
    できない場合は、サードパーティのファイルをソースコントロール内の別ディレクトリに保持するのがベストなアプローチ
  • ビルドの位置を決める
  • テストコードを密に対応つける

リントかわいいよ、リント http://csslint.net/

14章 Ant

ant

  • macの場合標準搭載
    お、おう
  • 起動には、 build.xml が必須
    お、おう

サンプル

<?xml version="1.0" encoding="UTF-8"?>
<project name="maintainablejs" default="hello">

    <target name="hello">
        <echo>Hello world!</echo>
    </target>

    <target name="goodby" depends="hello">
        <echo>Goodbye!</echo>
    </target>

</project>

実行 $ ant goodby

Javaのプロパティファイルで定義しておき、Antに直接ロードさせることもできる

そうだね、よく見るね。

14.6 Buildr

https://github.com/nzakas/buildr

<import file="/path/to/buildr/buildr.xml" />

これを定義しておけば、antタスクを簡単な構文で集められるようになる

15章 バリデーション

  • JSHintを開発システムに取り入れて、JSコードを自動的に分析検証する方法
  • JSソースを読み込む方法

// 除外したいファイルパターンを指定することもできる

<fileset dir="./src" includes="**/*.js" excludes="**/*-test.js" />

filelistもあるが、実際はfilesetのほうが使うようになるとのことです。

15.2 タスク

これを定義しておけば、antタスクを簡単な構文で集められるようになる

必要なツール

Rhinoをダウンロードする

jsHintをダウンロードする

https://github.com/jshint/jshint

16章 ファイルの連結

antだったら簡単に複数のjsファイルをまとめて一つにすることも可能
ただし、何も指定しなければABC順なので、変えたい場合は明示する必要あり

 <target name="concatenate">

        <concat destfile="${build.dir}/build.js">
            <fileset dir="${src.dir}" includes="**/*.js" />
        </concat>

    </target>

可能な限り、filesetで指定することをお勧めする

16.2 行末

  • 連結の時に最終行に改行がないと、うまく結合されない。
  • そんなときにはオプションを指定すれば一発!
  • オプション eolで改行記号を変えることも
<concat destfile="${build.dir}/build.js" fixlastline="yes" eol="lf">
    <fileset dir="${src.dir}" includes="**/*.js" />
</concat>

TIME UP

続きはまたどこかで行いますです。
ぬーん、ごめんなさいごめんなさい。

関連エントリ

この本

メンテナブルJavaScript ―読みやすく保守しやすいJavaScriptコードのための作法

メンテナブルJavaScript ―読みやすく保守しやすいJavaScriptコードのための作法