8 Star 16 Fork 0

Gitee 极速下载 / qor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: http://github.com/qor/qor
克隆/下载
gulpfile.js 11.66 KB
一键复制 编辑 原始数据 按行查看 历史
Finn 提交于 2024-04-23 23:16 . Upgrade pacakge and Remove outdated
"use strict";
let gulp = require("gulp"),
babel = require("gulp-babel"),
plumber = require("gulp-plumber"),
cleanCSS = require("gulp-clean-css"),
concat = require("gulp-concat"),
sass = require("gulp-sass"),
uglify = require("gulp-uglify"),
fs = require("fs"),
path = require("path"),
es = require("event-stream"),
rename = require("gulp-rename");
let moduleName = (function() {
let args = process.argv,
length = args.length,
i = 0,
name,
subName,
useSubName;
while (i++ < length) {
if (/^--+(\w+)/i.test(args[i])) {
name = args[i].split("--")[1];
subName = args[i].split("--")[2];
useSubName = args[i].split("--")[3];
break;
}
}
return {
name: name,
subName: subName,
useSubName: useSubName,
};
})();
// Admin Module
// Command: gulp [task]
// Admin is default task
// Watch Admin module: gulp
// -----------------------------------------------------------------------------
function adminTasks() {
let pathto = function(file) {
return "../admin/views/assets/" + file;
};
let scripts = {
src: pathto("javascripts/app/*.js"),
dest: pathto("javascripts"),
qor: pathto("javascripts/qor/*.js"),
qorInit: pathto("javascripts/qor/qor-config.js"),
qorCommon: pathto("javascripts/qor/qor-common.js"),
qorAdmin: [pathto("javascripts/qor.js"), pathto("javascripts/app.js")],
all: ["gulpfile.js", pathto("javascripts/qor/*.js")],
};
let styles = {
src: pathto("stylesheets/scss/{app,qor}.scss"),
dest: pathto("stylesheets"),
vendors: pathto("stylesheets/vendors"),
main: pathto("stylesheets/{qor,app}.css"),
qorAdmin: [
pathto("stylesheets/vendors.css"),
pathto("stylesheets/qor.css"),
pathto("stylesheets/app.css"),
],
scss: pathto("stylesheets/scss/**/*.scss"),
};
gulp.task("qor", function() {
return gulp
.src([scripts.qorInit, scripts.qorCommon, scripts.qor])
.pipe(plumber())
.pipe(concat("qor.js"))
.pipe(uglify())
.pipe(gulp.dest(scripts.dest));
});
gulp.task(
"js",
gulp.series("qor", function() {
return gulp
.src(scripts.src)
.pipe(plumber())
.pipe(concat("app.js"))
.pipe(uglify())
.pipe(gulp.dest(scripts.dest));
})
);
gulp.task("qor+", function() {
return gulp
.src([scripts.qorInit, scripts.qorCommon, scripts.qor])
.pipe(plumber())
.pipe(
babel({
presets: ["@babel/env"],
})
)
.pipe(concat("qor.js"))
.pipe(uglify())
.pipe(gulp.dest(scripts.dest));
});
gulp.task("js+", function() {
return gulp
.src(scripts.src)
.pipe(plumber())
.pipe(
babel({
presets: ["@babel/env"],
})
)
.pipe(concat("app.js"))
.pipe(uglify())
.pipe(gulp.dest(scripts.dest));
});
gulp.task("sass", function() {
return gulp
.src(styles.src)
.pipe(plumber())
.pipe(sass().on("error", sass.logError))
.pipe(gulp.dest(styles.dest));
});
gulp.task(
"css",
gulp.series("sass", function() {
return gulp
.src(styles.main)
.pipe(plumber())
.pipe(cleanCSS())
.pipe(gulp.dest(styles.dest));
})
);
gulp.task("release_js", function() {
return gulp
.src(scripts.qorAdmin)
.pipe(concat("qor_admin_default.js"))
.pipe(gulp.dest(scripts.dest));
});
gulp.task("release_css", function() {
return gulp
.src(styles.qorAdmin)
.pipe(concat("qor_admin_default.css"))
.pipe(gulp.dest(styles.dest));
});
gulp.task(
"release",
gulp.series("qor+", "js+", "css", "release_js", "release_css")
);
let watcher = gulp.task("watch", function() {
let watch_qor = gulp.watch(scripts.qor, gulp.series("qor+")),
watch_js = gulp.watch(scripts.src, gulp.series("js+")),
watch_css = gulp.watch(styles.scss, gulp.series("css"));
gulp.watch(styles.qorAdmin, gulp.series("release_css"));
gulp.watch(scripts.qorAdmin, gulp.series("release_js"));
watch_qor.on("change", function(path, stats) {
console.log(":==> File " + path + " was changed, running tasks...");
});
watch_js.on("change", function(path, stats) {
console.log(":==> File " + path + " was changed, running tasks...");
});
watch_css.on("change", function(path, stats) {
console.log(":==> File " + path + " was changed, running tasks...");
});
});
gulp.task("default", gulp.series("watch"));
}
// -----------------------------------------------------------------------------
// Other Modules
// Command: gulp [task] --moduleName--subModuleName
//
// example:
// Watch Worker module: gulp --worker
//
// if module's assets just as normal path:
// moduleName/views/themes/moduleName/assets/javascripts(stylesheets)
// just use gulp --worker
//
// if module's assets in enterprise as normal path:
// moduleName/views/themes/moduleName/assets/javascripts(stylesheets)
// just use gulp --microsite--enterprise
//
// if module's assets path as Admin module:
// moduleName/views/assets/javascripts(stylesheets)
// you need set subModuleName as admin
// gulp --worker--admin
//
// if you need run task for subModule in modules
// example: worker module inline_edit subModule:
// gulp --worker--inline_edit
//
// gulp --media--media_library--true
//
// -----------------------------------------------------------------------------
function moduleTasks(moduleNames) {
let moduleName = moduleNames.name,
subModuleName = moduleNames.subName,
useSubName = moduleNames.useSubName;
let pathto = function(file) {
if (moduleName && subModuleName) {
if (subModuleName == "admin") {
return "../" + moduleName + "/views/assets/" + file;
} else if (subModuleName == "enterprise") {
return (
"../../../enterprise.getqor.com/" +
moduleName +
"/views/themes/" +
moduleName +
"/assets/" +
file
);
} else if (useSubName) {
if (useSubName == "admin") {
return (
"../" + moduleName + "/" + subModuleName + "/views/assets/" + file
);
} else {
return (
"../" +
moduleName +
"/" +
subModuleName +
"/views/themes/" +
subModuleName +
"/assets/" +
file
);
}
} else {
return (
"../" +
moduleName +
"/" +
subModuleName +
"/views/themes/" +
moduleName +
"/assets/" +
file
);
}
}
return (
"../" + moduleName + "/views/themes/" + moduleName + "/assets/" + file
);
};
let scripts = {
src: pathto("javascripts/"),
watch: pathto("javascripts/**/*.js"),
};
let styles = {
src: pathto("stylesheets/"),
watch: pathto("stylesheets/**/*.scss"),
};
function getFolders(dir) {
return fs.readdirSync(dir).filter(function(file) {
return fs.statSync(path.join(dir, file)).isDirectory();
});
}
gulp.task("js", function() {
let scriptPath = scripts.src,
folders = getFolders(scriptPath);
let task = folders.map(function(folder) {
return gulp
.src(path.join(scriptPath, folder, "/*.js"))
.pipe(plumber())
.pipe(
babel({
presets: ["@babel/env"],
})
)
.pipe(concat(folder + ".js"))
.pipe(uglify())
.pipe(gulp.dest(scriptPath));
});
return es.concat.apply(null, task);
});
gulp.task("css", function() {
let stylePath = styles.src,
folders = getFolders(stylePath);
let task = folders.map(function(folder) {
return gulp
.src(path.join(stylePath, folder, "/*.scss"))
.pipe(plumber())
.pipe(
plugins
.sass({
outputStyle: "compressed",
})
.on("error", sass.logError)
)
.pipe(cleanCSS())
.pipe(rename(folder + ".css"))
.pipe(gulp.dest(stylePath));
});
return es.concat.apply(null, task);
});
gulp.task("watch", function() {
let moduleScript = gulp.watch(
scripts.watch,
{ debounceDelay: 2000 },
gulp.series("js")
);
gulp.watch(styles.watch, gulp.series("css"));
moduleScript.on("change", function(event) {
console.log(
":==> File " + event.path + " was " + event.type + ", running tasks..."
);
});
});
gulp.task("default", gulp.series("watch"));
gulp.task("release", gulp.series("js", "css"));
}
// Init
// -----------------------------------------------------------------------------
if (moduleName.name) {
let taskPath =
moduleName.name + "/views/themes/" + moduleName.name + "/assets/",
runModuleName =
'Running "' + moduleName.name + '" module task in "' + taskPath + '"...';
if (moduleName.subName) {
if (moduleName.subName == "admin") {
taskPath = moduleName.name + "/views/assets/";
runModuleName =
'Running "' +
moduleName.name +
'" module task in "' +
taskPath +
'"...';
} else if (moduleName.subName == "enterprise") {
taskPath =
"../../../enterprise.getqor.com/" +
moduleName.name +
"/views/themes/" +
moduleName.name +
"/assets/";
runModuleName =
'Running "' +
moduleName.name +
'" module task in "' +
taskPath +
'"...';
} else if (moduleName.useSubName) {
if (moduleName.useSubName == "admin") {
taskPath =
moduleName.name + "/" + moduleName.subName + "/views/assets/";
} else {
taskPath =
moduleName.name +
"/" +
moduleName.subName +
"/views/themes/" +
moduleName.subName +
"/assets/";
}
runModuleName =
'Running "' +
moduleName.name +
" > " +
moduleName.subName +
'" module task in "' +
taskPath +
'"...';
} else {
taskPath =
moduleName.name +
"/" +
moduleName.subName +
"/views/themes/" +
moduleName.name +
"/assets/";
runModuleName =
'Running "' +
moduleName.name +
" > " +
moduleName.subName +
'" module task in "' +
taskPath +
'"...';
}
}
console.log(runModuleName);
moduleTasks(moduleName);
} else {
console.log('Running "admin" module task in "admin/views/assets/"...');
adminTasks();
}
// Task for compress js and css vendor assets
gulp.task("combineJavaScriptVendor", function() {
return gulp
.src([
"!../admin/views/assets/javascripts/vendors/jquery.min.js",
"../admin/views/assets/javascripts/vendors/*.js",
])
.pipe(concat("vendors.js"))
.pipe(gulp.dest("../admin/views/assets/javascripts"));
});
gulp.task("compressCSSVendor", function() {
return gulp
.src("../admin/views/assets/stylesheets/vendors/*.css")
.pipe(concat("vendors.css"))
.pipe(gulp.dest("../admin/views/assets/stylesheets"));
});
gulp.task("combineDatetimePicker", function() {
return gulp
.src([
"../admin/views/assets/javascripts/qor/qor-config.js",
"../admin/views/assets/javascripts/qor/qor-material.js",
"../admin/views/assets/javascripts/qor/qor-modal.js",
"../admin/views/assets/javascripts/qor/datepicker.js",
"../admin/views/assets/javascripts/qor/qor-datepicker.js",
"../admin/views/assets/javascripts/qor/qor-timepicker.js",
])
.pipe(plumber())
.pipe(
babel({
presets: ["@babel/env"],
})
)
.pipe(concat("datetimepicker.js"))
.pipe(uglify())
.pipe(gulp.dest("../admin/views/assets/javascripts"));
});
1
https://gitee.com/mirrors/qor.git
git@gitee.com:mirrors/qor.git
mirrors
qor
qor
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891