2018/04/25時点。これは楽チン、すばらしい!
成果物
目的
HTML,CSS,JSを快適に開発するための環境構築。
- メタ言語で書いてコードをモジュール化!
- 最新言語で書いて旧式ブラウザで動かす!
$ gulp
コマンド一発で作業の自動化!- ビルド&ファイル結合
- コードが変更されたら自動リビルド&ブラウザ起動/更新
メタ言語
メタ言語 | 出力言語 |
---|---|
pug | HTML |
stylus | CSS |
JS(ES6) | JS(ES5) |
pug, stylus は別ファイルに分割、変数使用などができてDRYに書けるようになる。ES6はJSでclass構文などが使える。webpackではファイル分割しimport
構文で取り込める。
コードの保守性が保てる!
自動更新
pug, stylus, jsのソースコードファイルを監視し、変更があればブラウザを自動更新して表示する。いちいち手動でコマンドを打つ必要なし!
使い方
$ cd /tmp $ git clone https://github.com/ytyaru/Gulp.Install.20180425070000 $ cd Gulp.Install.20180425070000 $ npm i $ gulp
- 事前にgit, Node.js, npmがインストールされていること
所要時間 | ファイルサイズ |
---|---|
約10分 | 約92MiB |
コマンドの概要は以下。
- githubから今回のコードを入手
- 必要なnpmパッケージをローカルにインストールする
- gulpでビルドとブラウザ起動のタスクを実行する
実行結果
開発環境
- Raspberry Pi 3 Model B
node_modules/ にインストールするもの
モジュール | 説明 |
---|---|
gulp-stylus | stylus→css |
gulp-sass | sass→css |
gulp-pug | pug→html |
gulp-plumber | sassとpugの変換でエラーが出た場合の強制終了を防止 |
gulp-notify | デスクトップ通知 |
browser-sync | ブラウザの起動、ファイル変更時リロード |
webpack | JSファイル結合 |
webpack-stream | gulpでwebpackを使うために必要 |
gulp-babel | gulpでbabelを使うために必要 |
babel | JSをES6からES5へトランスパイルする |
babel-preset-env | 指定ブラウザに未実装の構文のみトランスパイルする(将来2.0正式版になり"useBuiltIns": "usage"できれば babel-polyfill, babel-plugin-transform-runtime不要) |
babel-polyfill | Promiseなどの機能が未実装なら穴埋めする |
構成
- Gulp.Install.20180425070000/
- node_modules/
- src/
- pug/
- index.html
- stylus/
- style.styl
- js/
- main.js
- Sub.js
- pug/
- dst/
- html/
- css/
- js/
- gulpfile.js
- webpack.config.js
- .babelrc
gulp
コマンドでsrc/
配下のコードがビルドされる。出力先はdst/
。index.html
はプロジェクトのルートに出力。
gulp
コマンドで実行するタスクはすべてgulpfile.js
に書いてある。JSの結合とトランスパイルの設定はそれぞれwebpack.config.js
, .babelrc
にある。
おまけ
使わなかったもの
gulp-sass
- インストールに1時間近くかかった
- stylusならsass記法でも書ける
sass
はstylus
と同様、CSSのメタ言語。最初はstylus
でなくsass
を使おうとしていた。情報も多かった。だが、stylusは後発だし構文もsassで書けるようだったのでgulp-sass
はやめた。
babel-polyfill
- Promiseの勉強が必要
- babel-preset-env 2.0が正式版になれば不要?(`"useBuiltIns": "usage"で解決)
その前にpug, stylusの学習が先。また、Promise以外のES6についても同様。それをやっているうちにブラウザでネイティブ実装されるかも。と思ったのでまだ使ってない。