publishing-template
Version:
publishing template
165 lines (135 loc) • 4.4 kB
JavaScript
const gulp = require('gulp');
const browserSync = require('browser-sync').create();
const concat = require('gulp-concat');
const html = require('gulp-file-include');
const del = require('del');
const htmlbeautify = require('gulp-html-beautify');
const replace = require('gulp-replace');
const sass = require('gulp-sass');
sass.compiler = require('node-sass');
/* scss TASK*/
function scss() {
return gulp.src('src/scss/**/*.scss')
.pipe(sass.sync().on('error', sass.logError))
.pipe(gulp.dest('./dist/css'))
}
function htmlInclude() {
let source = 'src/html/include/*.html';
return gulp.src(source)
.pipe(html())
.pipe(gulp.dest('dist/html/include'))
}
function htmlPage() {
if (process.env.NODE_ENV == 'product') {
gulp.src('src/html/include/head.html')
.pipe(replace('bootstrap.css', 'bootstrap.min.css'))
.pipe(gulp.dest('src/html/include/'));
} else if (process.env.NODE_ENV == 'develope') {
gulp.src('src/html/include/head.html')
.pipe(replace('bootstrap.min.css', 'bootstrap.css'))
.pipe(gulp.dest('src/html/include/'));
}
return gulp.src('src/html/*.html')
.pipe(html())
.pipe(gulp.dest('dist/html/'))
}
function replaceIndex() {
return gulp.src('dist/index.html')
.pipe(replace('src="./pagelist', 'src="../pagelist'))
.pipe(gulp.dest('dist/'));
}
function copyCss() {
gulp.src(['src/css/dist/bootstrap.min.css', 'src/css/dist/bootstrap.min.css.map'])
.pipe(gulp.dest('dist/css'));
return gulp.src('src/css/dist/fonts/**',)
.pipe(gulp.dest('dist/css/fonts'));
}
function copyIndex() {
return gulp.src('src/index.html')
.pipe(gulp.dest('dist/'));
}
function copyImg() {
return gulp.src('src/img/**/**')
.pipe(gulp.dest('dist/img'));
}
function copyFonts() {
return gulp.src('src/fonts/**/**')
.pipe(gulp.dest('dist/fonts'));
}
function jsLib() {
let sourceLib = [
'src/js/src/jquery.js',
'src/js/src/popper.min.js',
'src/js/src/bootstrap.min.js',
'src/js/src/_common.js',
'src/js/src/bootstrap-datepicker.js',
'src/js/src/bootstrap-datepicker.ko.min.js',
'src/js/src/jquery.twbsPagination.js',
];
return gulp.src(sourceLib)
.pipe(concat('bundle.js'))
.pipe(gulp.dest('dist/js'))
}
function jsCommon() {
let sourceUi = ['src/js/ui/*.js'];
return gulp.src(sourceUi)
.pipe(concat('common.js'))
.pipe(gulp.dest('dist/js'))
}
function watchScss() {
gulp.watch('src/scss/**/*.scss', gulp.series(scss));
}
function watchHtml() {
gulp.watch(['src/html/*.html'], gulp.series(htmlPage));
}
function watchInclude() {
gulp.watch('src/html/include/*.html', gulp.series(htmlInclude, htmlPage));
}
function watchJs() {
gulp.watch('src/js/*/*.js', gulp.series(jsLib, jsCommon));
}
function watchImg() {
gulp.watch('src/img/**/*', gulp.series(copyImg));
}
function watchFont() {
gulp.watch('src/fonts/**/**', gulp.series(copyFonts));
}
function beautify() {
var options = {
indentSize: 4
}
return gulp.src('./dist/html/*.html')
.pipe(htmlbeautify(options))
.pipe(gulp.dest('./dist/html/'))
}
function delDist() {
return del('dist');
}
function setEnvProduct(cb) {
process.env.NODE_ENV = 'product';
cb();
}
function setEnvDevelope(cb) {
process.env.NODE_ENV = 'develope'
cb();
}
//task
gulp.task("dev", gulp.series(setEnvDevelope, delDist, scss, copyIndex, copyImg, copyFonts, jsLib, jsCommon, htmlPage));
gulp.task("dist", gulp.series(setEnvProduct, delDist, copyCss, copyImg, copyFonts, jsLib, jsCommon, htmlPage, beautify));
gulp.task("watch", gulp.parallel(watchScss, watchHtml, watchInclude, watchJs, watchImg, watchFont));
gulp.task('browser-sync', function() {
browserSync.init({
port:2012,
server: {
baseDir: "./",
index: "dist/index.html"
}
});
gulp.watch('src/scss/**/*.scss', gulp.series(scss)).on('change', browserSync.reload);
gulp.watch(['src/html/*.html'], gulp.series(htmlPage)).on('change', browserSync.reload);
gulp.watch('src/html/include/*.html', gulp.series(htmlInclude, htmlPage)).on('change', browserSync.reload);
gulp.watch('src/js/*/*.js', gulp.series(jsLib, jsCommon)).on('change', browserSync.reload);
gulp.watch('src/img/**/*', gulp.series(copyImg)).on('change', browserSync.reload);
gulp.watch('src/fonts/**/**', gulp.series(copyFonts)).on('change', browserSync.reload);
});
exports.default = gulp.series("dist");