課題
-
watch
中にファイルを追加しても自動的には管理対象にならないので、どうにかしたい - Node.jsの4.0からES6が使えるようになっているので、書き直したい
- Jadeのコンパイルが1分以上も続くようになってきたので、必要なファイルだけがコンパイルされるように直したい
- この機会にグローバルへのインストールが必須なものは排除したい
1. watch
中にファイルを追加しても自動的には管理対象にならないので、どうにかしたい
watch
中にファイルを追加しても何も起こらない例:
gulpfile.js
gulp.task('watch', function() {
gulp.watch(['./src/**/*.styl'], ['build-stylus']);
});
gulp
のwatch
メソッドではなく、gulp-watch
を使うことで解決できます。
gulpfile.js
var gulpWatch = require('gulp-watch');
gulp.task('watch', function() {
gulpWatch(['./src/**/*.styl'], function() {
gulp.start('build-stylus');
});
});
2. Node.jsの4.0からES6が使えるようになっているので、書き直したい
ES5で書かれている例:
gulpfile.js
var gulpWatch = require('gulp-watch');
gulp.task('watch', function() {
gulpWatch(['./src/**/*.styl'], function() {
gulp.start('build-stylus');
});
});
とりあえずconst
と=>
を使って、var
とfunction
を置き換えればOK。
gulpfile.js
const gulpWatch = require('gulp-watch');
gulp.task('watch', () => {
gulpWatch(['./src/**/*.styl'], () => {
gulp.start('build-stylus');
});
});
処理が一行だけなら、もう少しだけ短く書けますね。
gulpfile.js
const gulpWatch = require('gulp-watch');
gulp.task('watch', () => {
gulpWatch(['./src/**/*.styl'], () => gulp.start('build-stylus'));
});
3. Jadeのコンパイルが1分以上も続くようになってきたので、必要なファイルだけがコンパイルされるように直したい
ファイルを保存するたびに全ファイルが更新されてしまう例:
gulpfile.js
var gulpJade = require('gulp-jade');
gulp.task('jade', function() {
return gulp.src(['./src/**/*.jade'])
.pipe(gulpJade())
.pipe(gulp.dest('./dist/'));
});
gulp.task('watch', function() {
gulp.watch(['./src/**/*.jade'], ['jade']);
});
watch
系のタスクの中で、コンパイル処理を続けて書けばOK。
gulpfile.js
const gulpJade = require('gulp-jade');
const gulpWatch = require('gulp-watch');
gulp.task('jade', () => {
return gulp.src(['./src/**/*.jade'])
.pipe(gulpJade())
.pipe(gulp.dest('./dist/'));
});
gulp.task('watch', () => {
gulpWatch(['./src/**/*.jade'])
.pipe(gulpJade())
.pipe(gulp.dest('./dist/'));
});
4. この機会にグローバルへのインストールが必須なものは排除したい
グローバルへのインストールが必要なものの例:
- gulp本体
- Autoprefixer
$ npm install --global gulp
$ npm install --global postcss-cli autoprefixer
一方で、gulpプラグインのgulp-autoprefixerの方はグローバルへのインストールが不要です。
$ npm install --save-dev gulp-autoprefixer
gulp本体もgulp
タスクをnpm
コマンド経由で叩くようにすれば、グローバルへのインストールが不要になります。
↓こうするのを止めて、
$ gulp build
↓こう叩く
$ npm run build
必要な作業はpackage.json
にエイリアスを張るだけです。
package.json
{
"name": "my-awesome-project",
"version": "1.0.0",
"scripts": {
"build": "gulp build",
"watch": "gulp watch"
},
"devDependencies": {
"gulp": "~3.9.0"
}
}
まとめ
とりあえず以上ですが、読みやすくするために色々と端折りました。
長いバージョンはこちらで確認できます。1 2
ご清聴、ありがとうございました。
-
本物の方では
Autoprefixer
は使わずに、kouto-swiss
を使用しています。 ↩ -
ディレクトリ構成がやや特殊なので参考にされる際は気をつけて下さい。 ↩