gulp
Webフロントエンド向けのantみたいなやつ
WebpackがESModules前提の作りに見えたので、単純なソース結合の手段として調査
事始め
gulpでbabelを通してみる
https://gulpjs.com/docs/en/getting-started/quick-start
https://qiita.com/non_cal/items/5fad826d75b9f5d84d21
インストール
npm install --save-dev gulp
npm install --save-dev gulp-babel @babel/core @babel/preset-env
定義ファイルの作成
code:gulpfile.js
const gulp = require('gulp')
const babel = require('gulp-babel')
gulp.task('babel', _=>{
return gulp.src('src/*.js')
.pipe(babel({
presets: '@babel/preset-env',
sourceType: "script" // 'use strict'付けたくない
}))
.pipe(gulp.dest('dest'))
})
// ファイル変更があった時、バベルをやり直す
gulp.task('watch', _ => {
return gulp.watch([
'src/*.js',
'!src/unwatch.js' // exclude
], gulp.task('babel'));
});
実行
npx gulp babel
タスクを連結したい
作業毎にタスクを分けて、コマンド1つで一括実行。みたいな
2019版 v.4以降 gulpで順次実行(並列させない)タスクの書き方
code:gulpfile
gulp.task('default', gulp.series('clean', 'build', _ => {
// hogehoge
}));
ES6とES5が混在したコードをビルドする した
モダンなフロントエンド環境構築がしたい
gulp+ES6でフロントエンド開発
jsはbrowserify + babelifyでES6対応、uglifyで難読化
HTMLはテンプレートエンジンとしてejsを使う
CSSはSASSを使う
みたいな環境構築
プラグインいろいろ
gulp-uglify
js難読化
https://qiita.com/suisui654/items/9889425f07beedd313d0
gulp-concat
js結合
http://cly7796.net/wp/other/join-javascript-files-with-gulp/
gulp-plumber
エラーハンドリング
https://whiskers.nukos.kitchen/2014/12/06/gulp-notify.html
gulp-babel
ES6 -> ES5 変換
https://github.com/babel/gulp-babel
https://babeljs.io/docs/en/options
gulp-sass
SASSコンパイル
https://medium.com/@syuni/今更ながらgulpを使ってみる-e1498a893851
gulp-ejs
HTMLにテンプレートエンジンを使う
gulp-htmlmin
HTMLの圧縮
https://tyfkda.github.io/blog/2015/12/10/gulp-es6.html
gulp-eslint
gulpでeslint流す
https://weblike-curtaincall.ssl-lolipop.jp/blog/?p=1593
エラー関連
Did you forget to signal async completion?
https://www.tweeeety.blog/entry/2018/06/18/060030
taskにreturnが書いてないとダメらしい
Task function must be specified
https://satoyan419.com/gulp-v4/
ブログ記事なんかで、タスクを結合したい時にタスク名を配列にして渡している場合出るエラー
gulp.seriesを使いましょう
gulpでbabelのタスクが繰り返し大量に実行されてしまう
https://ja.stackoverflow.com/questions/31725/gulpでbabelのタスクが繰り返し大量に実行されてしまう
自分が遭遇したのだと、監視対象 js.dev/*.jsにビルドした結果の build.jsを吐き出していたので、それを検知してまたwatchが走って・・・という再帰構造が発生していた
gulpfile記述例
https://github.com/gulpjs/gulp/tree/master/docs/recipes