やりたいこと
- node.jsで開発時にgitのリモートリポジトリにpushする前にgulp経由でJS Beautifierをしている
- ファイルが多くなってくると時間がかかる(大体1分〜2分)
- 修正したファイルはせいぜい2,3ファイルなので、それだけbeautifyしたい
やりかた
- gulp-jsbeautifierとgulp-gitで、commitする前のファイルにJS Beautifierを実行する
- この方法だとcommit -> js beautifier -> rebase -> pushという方法ができない
gulpfile.js
var gulp = require('gulp');
var prettify = require('gulp-jsbeautifier');
var log = require('gulp-print');
var git = require('gulp-git');
gulp.task('default', function() {
console.log('run task');
});
gulp.task('jsbeautify', function() {
// lib以下にコードが入っている
git.exec({
args: 'diff --name-only HEAD ./lib/*.js ./lib/**/*.js'
}, function(err, stdout) {
if (err) throw err;
console.log(stdout);
var files = stdout.split('\n');
files.pop();
jsbeautify(files);
});
});
function jsbeautify(files) {
if (files.length === 0) {
console.log('no beautify file');
return;
}
gulp.src(files, {
base: './lib'
})
.pipe(log())
.pipe(prettify({
mode: 'VERIFY_AND_WRITE',
config: '.jsbeautify'
}))
.pipe(gulp.dest('lib'));
}
結論
JenkinsとかのCIサーバにJS Beautifier -> test -> commit/push させたほうがいい。人がやるときは、最低限綺麗にしておけばいいんじゃないかなと思った