147 lines
3.8 KiB
JavaScript
147 lines
3.8 KiB
JavaScript
"use strict";
|
|
|
|
const gulp = require("gulp");
|
|
const sass = require("gulp-sass");
|
|
const sourcemaps = require("gulp-sourcemaps");
|
|
const cleanCss = require("gulp-clean-css");
|
|
const htmlMinifier = require("gulp-html-minifier");
|
|
const uglify = require("gulp-uglify");
|
|
const concat = require("gulp-concat");
|
|
const rename = require("gulp-rename");
|
|
const eslint = require("gulp-eslint");
|
|
|
|
const develPath = "build/devel/";
|
|
const prodPath = "build/prod/";
|
|
const scssSrc = "./sass/*.scss";
|
|
const cssDir = "css/";
|
|
const imagesDir = "images/";
|
|
const imagesGlob = imagesDir + "**/*";
|
|
const jsDir = "js/";
|
|
const jsGlob = jsDir + "*.js";
|
|
const htmlGlob = "./*.html";
|
|
|
|
const jsCompileMap = {
|
|
"js/jquery.js": ["node_modules/jquery/dist/jquery.min.js"],
|
|
"js/vue.js": ["node_modules/vue/dist/vue.min.js"],
|
|
"js/highlight.js": ["node_modules/highlightjs/highlight.pack.min.js"],
|
|
"js/chartist.js": ["node_modules/chartist/dist/chartist.min.js"],
|
|
"js/login.js": [
|
|
"js/constants.js",
|
|
"js/utils.js",
|
|
"js/http.js",
|
|
"js/auth-common.js",
|
|
"js/login.js"
|
|
],
|
|
"js/forgot.js": [
|
|
"js/constants.js",
|
|
"js/utils.js",
|
|
"js/http.js",
|
|
"js/forgot.js"
|
|
],
|
|
"js/reset.js": [
|
|
"js/constants.js",
|
|
"js/utils.js",
|
|
"js/http.js",
|
|
"js/reset.js"
|
|
],
|
|
"js/signup.js": [
|
|
"js/constants.js",
|
|
"js/utils.js",
|
|
"js/http.js",
|
|
"js/auth-common.js",
|
|
"js/signup.js"
|
|
],
|
|
"js/dashboard.js": [
|
|
"js/constants.js",
|
|
"js/utils.js",
|
|
"js/http.js",
|
|
"js/errors.js",
|
|
"js/self.js",
|
|
"js/dashboard.js",
|
|
"js/dashboard-setting.js",
|
|
"js/dashboard-domain.js",
|
|
"js/dashboard-installation.js",
|
|
"js/dashboard-general.js",
|
|
"js/dashboard-moderation.js",
|
|
"js/dashboard-statistics.js",
|
|
"js/dashboard-import.js",
|
|
"js/dashboard-danger.js",
|
|
"js/dashboard-export.js",
|
|
],
|
|
"js/logout.js": [
|
|
"js/constants.js",
|
|
"js/utils.js",
|
|
"js/logout.js"
|
|
],
|
|
"js/commento.js": ["js/commento.js"],
|
|
"js/unsubscribe.js": [
|
|
"js/constants.js",
|
|
"js/utils.js",
|
|
"js/http.js",
|
|
"js/unsubscribe.js",
|
|
],
|
|
};
|
|
|
|
gulp.task("scss-devel", function () {
|
|
return gulp.src(scssSrc)
|
|
.pipe(sourcemaps.init())
|
|
.pipe(sass({outputStyle: "expanded"}).on("error", sass.logError))
|
|
.pipe(sourcemaps.write())
|
|
.pipe(gulp.dest(develPath + cssDir));
|
|
});
|
|
|
|
gulp.task("scss-prod", function () {
|
|
return gulp.src(scssSrc)
|
|
.pipe(sass({outputStyle: "compressed"}).on("error", sass.logError))
|
|
.pipe(cleanCss({compatibility: "ie8", level: 2}))
|
|
.pipe(gulp.dest(prodPath + cssDir));
|
|
});
|
|
|
|
gulp.task("html-devel", function () {
|
|
gulp.src([htmlGlob]).pipe(gulp.dest(develPath));
|
|
});
|
|
|
|
gulp.task("html-prod", function () {
|
|
gulp.src(htmlGlob)
|
|
.pipe(htmlMinifier({collapseWhitespace: true, removeComments: true}))
|
|
.pipe(gulp.dest(prodPath))
|
|
});
|
|
|
|
gulp.task("images-devel", function () {
|
|
gulp.src([imagesGlob]).pipe(gulp.dest(develPath + imagesDir));
|
|
});
|
|
|
|
gulp.task("images-prod", function () {
|
|
gulp.src([imagesGlob]).pipe(gulp.dest(prodPath + imagesDir));
|
|
});
|
|
|
|
gulp.task("js-devel", function () {
|
|
for (let outputFile in jsCompileMap) {
|
|
gulp.src(jsCompileMap[outputFile])
|
|
.pipe(sourcemaps.init())
|
|
.pipe(concat(outputFile))
|
|
.pipe(rename(outputFile))
|
|
.pipe(sourcemaps.write())
|
|
.pipe(gulp.dest(develPath))
|
|
}
|
|
});
|
|
|
|
gulp.task("js-prod", function () {
|
|
for (let outputFile in jsCompileMap) {
|
|
gulp.src(jsCompileMap[outputFile])
|
|
.pipe(concat(outputFile))
|
|
.pipe(rename(outputFile))
|
|
.pipe(uglify())
|
|
.pipe(gulp.dest(prodPath))
|
|
}
|
|
});
|
|
|
|
gulp.task("lint", function () {
|
|
return gulp.src(jsGlob)
|
|
.pipe(eslint())
|
|
.pipe(eslint.failAfterError())
|
|
});
|
|
|
|
gulp.task("devel", ["scss-devel", "html-devel", "images-devel", "lint", "js-devel"]);
|
|
gulp.task("prod", ["scss-prod", "html-prod", "images-prod", "lint", "js-prod"]);
|