gulpfile.jsを見直したので【覚書】
そういえば、と思い出して
最近ちょっと書き替えて調整したgulpfile.js。
一度設定しておいたら、つい、ずっとそのままで・・
最近になってようやくなんですけれど。
gulpfile.js
// 必要なモジュールをインポート
const { src, dest, watch, series, parallel } = require('gulp'),
sass = require('gulp-sass')(require('sass')),
autoprefixer = require('gulp-autoprefixer'),
cleanCSS = require('gulp-clean-css'),
rename = require('gulp-rename'),
//replace = require('gulp-replace'),
gcmq = require('gulp-group-css-media-queries'),
browserSync = require('browser-sync').create(),
plumber = require('gulp-plumber'),
changed = require('gulp-changed'),
notify = require('gulp-notify');
// ファイルパスの定義
const paths = {
scss: 'src/scss/*.scss',
css: ['src/assets/css/', 'dist/assets/css/'],
js: { src: 'src/assets/js/*.js', dist: 'dist/assets/js/' },
images: { src: 'src/assets/images/**/*.+(jpg|jpeg|png|gif|svg|webp)', dist: 'dist/assets/images/' },
html: { src: 'src/**/*.html', dist: 'dist/' }
};
// SCSS → CSS のタスク
const cssTask = done => {
src(paths.scss)
.pipe(plumber({
errorHandler: notify.onError({
title: "CSSエラー",
message: "エラー内容: <%= error.message %>"
})
}))
.pipe(sass.sync({ outputStyle: 'expanded' }).on('error', sass.logError))
.pipe(autoprefixer())
.pipe(gcmq())
.pipe(dest(paths.css[0]))
.pipe(dest(paths.css[1]))
//.pipe(cleanCSS({ compatibility: 'ie8' }))
.pipe(cleanCSS({ compatibility: 'defaults' }))
.pipe(rename({ extname: '.min.css' }))
.pipe(dest(paths.css[0]))
.pipe(dest(paths.css[1]))
.pipe(notify({ title: 'CSSコンパイル完了', message: new Date() }))
.pipe(browserSync.stream());
done();
};
// 画像最適化のタスク
const imagesTask = () => {
return src(paths.images.src)
.pipe(changed(paths.images.dist))
.pipe(dest(paths.images.dist));
};
// HTMLファイルのコピータスク
const htmlTask = () => {
return src(paths.html.src)
.pipe(plumber({
errorHandler: notify.onError({
title: "HTMLエラー",
message: "エラー内容: <%= error.message %>"
})
}))
.pipe(dest(paths.html.dist));
};
// JavaScriptファイルのコピータスク
const jsTask = () => {
return src(paths.js.src)
.pipe(plumber({
errorHandler: notify.onError({
title: "JSエラー",
message: "エラー内容: <%= error.message %>"
})
}))
.pipe(dest(paths.js.dist));
};
// ローカルサーバーの起動
const buildServer = done => {
browserSync.init({
server: {
baseDir: 'src/'
}
});
done();
};
// ブラウザの自動リロード
const browserReload = done => {
browserSync.reload();
done();
};
// ファイルの監視
const watchFiles = done => {
watch(paths.scss, series(cssTask, browserReload));
watch(paths.js.src, series(jsTask, browserReload));
watch(paths.images.src, series(imagesTask, browserReload));
watch(paths.html.src, series(htmlTask, browserReload));
done();
};
// デフォルトタスクの設定
exports.default = parallel(watchFiles, buildServer);
小説ばかりに気を取られて、仕事がおろそかに・・・
なんてことはないです(たぶん…)
gulp-replace
は必要であれば使ったり。
pipe(cleanCSS({ compatibility: ‘ie8’ }))
この部分も、場合によっては。