あらまし
12月から、JSのコーディング規約を整えようとして、Jenkins上とGitのコミットフックでJSCSを叩くようにしたんですよ。
gulp-jscs + gulp-jscs-stylish つかって、Gulpコマンドとして用意しました。
preset は airbnb にしました。深い理由は無いんですが、自分の普段の書き方にわりと近かったので。
ちょっと冗長すぎるところはあるかなと思いますが・・・オブジェクト宣言時のカンマとか。
var obj = {
hoge: 'hoge',
fuga: 'fuga', // <- これね!
}; // <- あとこれとかね!
お堅い感じ。
振り回された><
ある日突然、ローカルではJSCS通るのにJenkinsで通らない事象が起きました。
node_modulesディレクトリを綺麗さっぱり消し去ってからnpm install
しただけではあるんですが、つまるところJSCSがアップデートされて、チェックするルールが変わったのですね。
https://github.com/jscs-dev/node-jscs/releases/tag/v2.9.0 (こいつだ・・・ッ!!)
ところで、gulp-jscsのバージョンは上がっていません。
アプリケーションのpackage.jsonにはgulp-jscsのみdependencyを指定していて、jscsはしてませんでした。
gulp-jscsのpackage.jsonを見ると、jscsのdependency指定は以下のようになってました。
{
"gulp-util": "^3.0.4",
"jscs": "^2.1.1",
"through2": "^2.0.0",
"tildify": "^1.0.0"
}
あーね。こりゃある日突然チェックルール変わっちゃうわ。
解決編
アプリケーションのpackage.jsonのdependency指定にjscs突っ込むだけ。
{
"gulp-jscs": "~3.0.2",
"gulp-jscs-stylish": "~1.3.0",
"jscs": "~2.8.0"
}
まとめ
ある程度以上の規模プロジェクトでコーディング規約が勝手に変わられちゃうと「全ソース修正したコミット、しかもスペース調整だけ」みたいな頭の痛くなるコミットができちゃうので、固定しときましょうという話でした。
もちろん、任意のタイミングで規約を改めるのはいいと思います。開発メンバーの意図しないところで規約が変わってしまうというのが迷惑なだけで。