The Acorn Spirit's Journey

tomisan.com

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’ }))
この部分も、場合によっては。

 

コメントは受け付けていません。