普段フロントエンジニアとして業務をしていると受託も請け負うことがあるのですが、そんな時にパパっと環境を作っておくためにテンプレートを用意しているはずです!
今回は実際実務でも使っているGulpのコンフィグファイルを解説していきたいと思います!
普段自分はgulpを使ってscssやpug,jsファイルをコンパイルしているのですが、gulpを使えばそれらのファイルを一括で管理することが可能となります。
// プラグインを定義
const gulp = require("gulp");
const sass = require("gulp-sass");
const autoprefixer = require("gulp-autoprefixer");
const plumber = require("gulp-plumber");
const cleancss = require ("gulp-clean-css");
const sourcemaps = require('gulp-sourcemaps');
const connect = require('gulp-connect-php');
const webpackstream = require("webpack-stream");
const webpack = require("webpack");
// webpack setting
const webpackConfig = require("./webpack.config");
// sassファイルのコンパイルの処理
gulp.task('sass', done => {
gulp.src("src/scss/**/*.scss")
.pipe(plumber())
.pipe(sourcemaps.init())
.pipe(sass())
.pipe(autoprefixer())
.pipe(cleancss())
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest("./dist"))
done()
});
// jsファイルのコンパイルの処理
gulp.task("js", done => {
return webpackstream(webpackConfig, webpack)
.on('error', function handleError() {
this.emit('end'); // Recover from errors
})
.pipe(gulp.dest("./dist"))
done()
});
// ローカルサーバーを定義
gulp.task('connect', done => {
connect.server({
port:8001,
});
done()
});
// 監視対象を定義
gulp.task('watch', () => {
gulp.watch('src/scss/**/*.scss', gulp.series('sass','logSass'))
gulp.watch('src/js/**/*.js', gulp.series('js','logJs'));
});
// sassのエラーを検出するための定義
gulp.task('logSass', done => {
console.log("sass was successful.")
done()
});
// jsのエラーを検出するための定義
gulp.task('logJs', done => {
console.log("javascript was successful.")
done()
});
gulp.task("default",gulp.series(gulp.parallel('watch','connect')));
''' { "name": "template", "version": "1.0.0", "main": "gulpfile.js", "scripts": { "test": "echo "Error: no test specified" && exit 1", // npm run buildで実行 "build": "npx gulp js && npx gulp sass" }, "repository": { "type": "git", "url": "git+ssh://git@bitbucket.org/httpwwwnh/template.git" }, "author": "", "license": "ISC", // gulpのプラグインをインストール "devDependencies": { "gulp": "^4.0.2", "gulp-autoprefixer": "^6.1.0", "gulp-clean-css": "^4.2.0", "gulp-connect-php": "^1.0.3", "gulp-plumber": "^1.2.1", "gulp-sass": "^4.0.2", "gulp-sourcemaps": "^2.6.5", "webpack": "^4.41.2", "webpack-stream": "^5.2.1" }, "description": "" }
'''