しばらくGulpを使っていないうちにバージョン4へと進化しており、昔使っていたgulpfile.jsがうまく動作しなくなっていた。
Gulpのバージョンを落とすことも考えたが、せっかくの機会なのでgulpfile.jsをバージョン4へ対応させることにした。
今回はHTML/CSSコーディングを行うためだけの環境として、Compassのビルド、ローカルサーバー立ち上げ、ライブプレビューを行うGulp環境を用意した。
コンテンツ
パッケージのインストール
必要なパッケージは以下のとおり。
インストールはnpmコマンドで行う。
npm i --save-dev gulp gulp-autoprefixer gulp-compass gulp-plumber browser-sync
なお、Compassはgemで別途インストールしておく。
Compassの設定ファイル config.rbもルートディレクトリに用意しておこう。
ディレクトリ構造
ディレクトリは以下の構造とする。
./
./package.json
./gulpfile.js
./config.rb
./index.html
./sass/style.scss
./css/
gulpfile.js
gulpfile.jsコード全文を載せておく。
先ほどインストールしたパッケージがあれば、これで動作するはず。
const gulp = require('gulp');
const plumber = require("gulp-plumber");
const compass = require('gulp-compass');
const autoprefixer = require('gulp-autoprefixer');
const browserSync = require('browser-sync');
//setting : paths
const paths = {
'root' : './',
'html' : './**/*.html',
'cssSrc' : './sass/**/*.scss',
'cssDist' : './css/',
'compassConf': './config.rb'
}
//gulpコマンドの省略
const { watch, series, task, src, dest, parallel } = require('gulp');
//Sass
task('sass', function () {
return (
src(paths.cssSrc)
.pipe(plumber())
.pipe(compass({
config_file: paths.compassConf,
comments: false,
css: paths.cssDist,
sass: `${paths.root}sass`
}))
.pipe(autoprefixer({
browsers: ['ie >= 11'],
cascade: false,
grid: true
}))
// .pipe(dest(paths.cssDist))
);
});
// browser-sync
task('browser-sync', () => {
return browserSync.init({
server: {
baseDir: paths.root
},
port: 8080,
reloadOnRestart: true
});
});
// browser-sync reload
task('reload', (done) => {
browserSync.reload();
done();
});
//watch
task('watch', (done) => {
watch([paths.cssSrc], series('sass', 'reload'));
watch([paths.html], series('reload'));
done();
});
task('default', parallel('watch', 'browser-sync'));
gulpタスクの実行
gulpfile.jsでdefaultタスクを定義しているので、以下のコマンドを叩けばローカルサーバーが立ち上がる。
gulp
sassフォルダ内の*.scssファイルを更新すると、cssフォルダにコンパイルされたcssファイルが生成され、ブラウザ(ローカルサーバー)が自動リロードされるはずだ。