Gulp4によるコーディング – 環境設定編
Gulpによるコーディング環境を整える下準備 – node.jsのインストール
GulpをつかうにはNode.jsを作業環境にインストールします。
Macの場合は、homebrewでのインストール管理が有名です。
Linux系では、nodebrewもしくは、直接yumやapt-getコマンドでインストールとなります。
nodebrewを使う場合の手順
このnodebrewはとても管理がしやすくておすすめです。
Macでも直接もしくは、homebrew経由でインストールして使うことができます。
Windowsの方はこちらでは説明を省きますがNodelistが有名です。
Mac場合の準備
Homebrewのインンストール
//ターミナルで実行 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
ちなみにhomebrewのアップデートは以下のコマンドで行います。
$ brew update
homebrew経由でnodebrewをインストール
$ brew install nodebrew
Linuxの場合の準備
・CentOSの場合
まずはパッケージをアップデートしておく
$ yum update -y
・Debian/Ubuntuの場合
curlがインストールされていないケースもあるので、まずはcurlをインストール
apt-get install curl -y
nodebrewのインストールと設定(Mac・Linux共通)
$ curl -L git.io/nodebrew | perl - setup
インストール後に以下のようなメッセージが表示されます。
======================================== Export a path to nodebrew: export PATH=$HOME/.nodebrew/current/bin:$PATH ========================================
パスを通さないと使いづらいので、パスを通すように設定します
$ vi ~/.bashrc ——— 以下の行を追加 # Nodebrew export PATH=$HOME/.nodebrew/current/bin:$PATH — :wqで保存終了
.bashrcを再読み込み
source ~/.bashre
これでnodebrewのインストールが完了です。
Node.jsのインストールと設定
現在インストールできる、リモート側のNodeのバージョンリスト一覧表示
$ nodebrew ls-remote
安定バージョンのnodejsのインストールします。
単なるinstallよりinstall-binaryの方がコンパイル済みのものをとってくるので早いのでおすすめ
$ nodebrew install-binary stable
特定バージョンの場合は以下のようになります。
$ nodebrew install-binary v10.15.0
インストールされているパッケージのバージョン確認します。
$ nodebrew ls
インストールしたバージョンを使うように設定します。
$ nodebrew use v11.15.0
Gulpを作業環境にインストールする
まずは作業環境にてnpmの初期化をします。
//作業環境に移動 $ cd /project_directory/ //npmを初期化 $npm init -y
package.jsonファイルが作られます。
package.jsonにrepositoryのエラーが出ないように以下の記述を追加します。
"name": "www", "version": "1.0.0", "description": "", "main": "gulpfile.js", "private": true, //←これ
次にgulpモジュールをインストールします。
$ npm istall —save-dev gulp
Linuxの場合、darwin関係の警告が出る場合があります。
これは、macOSのシステム用のオプションの警告です。
Linuxには必要のないオプションなので気にしなくても良いのですが、気になる場合は、
$ npm istall --save-dev --no-optional gulp
とすると良いです。
ターミナルでgulpのパスが通っていない場合があります。
その時は
$ npm link gulp
とタイプして通します。
その他のモジュールもインストールしていきます。
$ npm install —save-dev gulp-sass
gulpfile.jsの設定
gulpfile.jsファイルでgulpやその他のモジュールの動作設定を行なっていきます。
Gulpは、3から4になり書き方がだいぶ変わってきています。
その辺りを少しまとめて見ました。
Version 4で変わったこと
- タスクなどの関数を実行する際にコールバックが必要になったこと
- task関数が非推奨になっことまだ使えます
- series関数(直列実行/同期) と parallel関数(並列実行/非同期)という関数が加わったこと
- exportsによるタスクの登録(パブリックタスクとプライベートタスク)
- パッケージはグローバルではなく各プロジェクトごとにインストールするように
となります。
その他にもVer.3からは大きく変わっていることが多数ありますが、とりあえず上記のポイントを押させておくと良いと思います。
タスクなどの関数を実行する際にコールバックが必要になったこと
こちらは、実行関数の最後にコールバック関数を実行すればOKです。
参考URL
https://gulpjs.com/docs/en/getting-started/creating-tasks
例えば、Scssのコンパイルなどは、以下のような形で書くことができます。
/*ファイルのpath設定*/ const paths = { 'scss':'./src/scss/',//Sassファイルの格納ディレクトリ } const compileScss = (cb) => { // src(paths.scss + '**/*.scss')//SCSSファイル .pipe(//sassコンパイルの設定 sass({ outputStyle: 'expanded' }) .on('error', sass.logError) ) .pipe(dest(paths.css));//CSSの書き出しディレクトリ cb(); // CallBack実行 }
task関数が非推奨になっこと(まだ使えますが)
タスクの登録は、gulp.taskを使わずに、exportsで登録する形になります。
例)
exports.default = series( browser_sync //定義した関数 ); exports.image_min = series(image_min);
また、watchの登録の仕方も変わります。
/*gulp.watchとseriesを変数にて定義*/ const {watch, series} = require('gulp'), sass = require('gulp-sass'); /*ファイルのpath設定*/ const paths = { 'scss':'./src/scss/',//Sassファイルの格納ディレクトリ } const compileScss = (cd) => { src(paths.scss + '**/*.scss') .pipe(sassGlob()) .pipe(//sassコンパイルの設定 sass({ outputStyle: 'expanded',//通常のCSSスタイルの書き出し }) .on('error', sass.logError) ) .pipe(dest(paths.css));//CSSの書き出しディレクトリ cd(); } const watchScss = watch(paths.scss + '**/*.scss', { usePolling: true }, compileScss)
series関数(直列実行/同期) と parallel関数(並列実行/非同期)という関数が加わったこと
処理を順番にする場合と、並列に同時に実行する場合など設定ができます。
Seriesの例)
const { series } = require('gulp'); const uglify_es = (cb) => { // body omitted cb(); } const image_min = (cb) => { // body omitted cb(); } exports.build = series(uglify_es, image_min);
Parallelの例)
const { parallel } = require('gulp'); const javascript = (cb) => { // body omitted cb(); } const css = (cb) => { // body omitted cb(); } exports.build = parallel(javascript, css);
exportsによるタスクの登録(パブリックタスクとプライベートタスク)
exportsを使ってタスクを登録します。
以前は
gulp.task('default',〜)
としてデフォルトのタスクを追加していましたが、これからは、
exports.default = series(関数名);
と設定をします。
次回はGulpでコーディングする際におすすめのパッケージやgulpfile.jsの具体的な書き方例などを書いていきます。