週末、簡単なサイト(※ただし曲がりなりにもレスポンシブになってないと困る)を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への書きだしなんて滅多にしないからこれでもいいかなーと。