Google Web Starterkitのgulpfile.jsをいじる。

週末、簡単なサイト(※ただし曲がりなりにもレスポンシブになってないと困る)を2サイト上げろと言われて泣いていたけーすけです。

WSKなんて使わなければ1日で終わったと思います。

これはGulp Starter Kitに改名してもいいんじゃないのかな。それはともかく、ver0.5.4betaについてくるgulpfileでgulpしてpublishするとWebフォントを利用したアイコンが上手く表示されません。なんじゃいそりゃ、ということでgulpfile.jsをいじってみました。

WSKどころかgulp二日目なので間違っていてもなんか色々ご容赦ください。

さて、WSKのpublish, buildに相当するのはgulp defaultだと思うんですが、こいつは、

gulp.task('default', ['clean'], function (cb) {
 runSequence('styles', ['jshint', 'html', 'images', 'fonts', 'copy'], cb);
});

となっています。

gulp標準のtaskで、まずcleanを実行してdist/をキレイにしてから、

stylesを実行、完了後、jshint, html, images, fonts, copyを並列処理。

まず、fontsタスクを見に行くと、app/fontsの中身から処理するので、images/icons内は処理されない。まあ、fontだからね。しかたないね。

続いてimages, これは画像をコピーではなくimageminで最適化している。これがもしかしたらバージョンによっては対象外のファイルがsrcに来たときは単にコピーをする、という動作なのかもしれない、が、とりあえずわたしの環境ではディレクトリを作るだけ作ってotfやらttfやらは完全スルー。

最後にcopy, こいつはapp直下のファイル(ただし.htmlは除く)と、node_modules以下にある.htaccessファイルをdistにコピーするらしい。

勝手に.htaccessがしれっとdistに紛れ込むのはそれはそれで怖いのだけれども、これを少し変えて、

gulp.task('copy', function () {
 return gulp.src([
 'app/**/*',
 '!app/**/*.html',
 'node_modules/apache-server-configs/dist/.htaccess'
 ], {
 dot: true
 }).pipe(gulp.dest('dist'))
 .pipe($.size({title: 'copy'}));
});

html以外全部持っていってしまう、という強引な変更。更に、defaultタスクを

gulp.task('default', ['clean'], function (cb) {
 runSequence('styles', 'copy', ['jshint', 'html', 'images', 'fonts'], cb);
});

として、まずstyles, それからcopy, 最後にその他を並列処理させることで、htmlやらimagesやら、最適化処理を挟むファイルの移動に関しては確実に上書きさせる、ということにしてみた。

もちろん、無駄だらけにも程があるので、ちゃんとやるのであればcopyのsrcで除外ファイルにfonts/やら*.jpgやらを真面目に設定して並列処理してやればいい。

ただ、distへの書きだしなんて滅多にしないからこれでもいいかなーと。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です