turbo-gulp
Version:
Gulp tasks to boost high-quality projects.
36 lines (34 loc) • 5.21 kB
JavaScript
import gulpSass from "gulp-sass";
import * as gulpSourceMaps from "gulp-sourcemaps";
import { Minimatch } from "minimatch";
import { asString, join } from "../utils/matcher";
/**
* Return a list of sources, prefixed by "from"
*/
export function getSources({ files, from }) {
return files.map((val) => asString(join(from, new Minimatch(val))));
}
export function buildSass(gulp, options) {
return gulp
.src(getSources(options), { base: options.from })
.pipe(gulpSourceMaps.init())
.pipe(gulpSass().on("error", gulpSass.logError))
.pipe(gulpSourceMaps.write())
.pipe(gulp.dest(options.to));
}
/**
* Generate a task to build pug files
*/
export function generateTask(gulp, options) {
const task = function () {
return buildSass(gulp, options);
};
task.displayName = "_build:sass";
return task;
}
export function watch(gulp, options) {
const buildTask = generateTask(gulp, options);
const sources = getSources(options);
return gulp.watch(sources, { cwd: options.from }, buildTask);
}
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIl9zcmMvdGFzay1nZW5lcmF0b3JzL3Nhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFDO0FBQ2pDLE9BQU8sS0FBSyxjQUFjLE1BQU0saUJBQWlCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBMEJsRDs7R0FFRztBQUNILE1BQU0scUJBQXFCLEVBQUMsS0FBSyxFQUFFLElBQUksRUFBVTtJQUMvQyxPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFXLEVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RGLENBQUM7QUFFRCxNQUFNLG9CQUFvQixJQUFVLEVBQUUsT0FBZ0I7SUFDcEQsT0FBTyxJQUFJO1NBQ1IsR0FBRyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFDLENBQUM7U0FDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7U0FDL0MsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNqQyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLHVCQUF1QixJQUFVLEVBQUUsT0FBZ0I7SUFDdkQsTUFBTSxJQUFJLEdBQWlCO1FBQ3pCLE9BQU8sU0FBUyxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUM7SUFDRixJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQztJQUNqQyxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRCxNQUFNLGdCQUFnQixJQUFVLEVBQUUsT0FBZ0I7SUFDaEQsTUFBTSxTQUFTLEdBQWlCLFlBQVksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDNUQsTUFBTSxPQUFPLEdBQWEsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsRUFBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBQyxFQUFFLFNBQVMsQ0FBYyxDQUFDO0FBQzFFLENBQUMiLCJmaWxlIjoidGFzay1nZW5lcmF0b3JzL3Nhc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGU1dhdGNoZXIgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IEd1bHAgfSBmcm9tIFwiZ3VscFwiO1xuaW1wb3J0IGd1bHBTYXNzIGZyb20gXCJndWxwLXNhc3NcIjtcbmltcG9ydCAqIGFzIGd1bHBTb3VyY2VNYXBzIGZyb20gXCJndWxwLXNvdXJjZW1hcHNcIjtcbmltcG9ydCB7IE1pbmltYXRjaCB9IGZyb20gXCJtaW5pbWF0Y2hcIjtcbmltcG9ydCB7IFRhc2tGdW5jdGlvbiB9IGZyb20gXCIuLi91dGlscy9ndWxwLXRhc2stZnVuY3Rpb25cIjtcbmltcG9ydCB7IGFzU3RyaW5nLCBqb2luIH0gZnJvbSBcIi4uL3V0aWxzL21hdGNoZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGFycmF5IG9mIG1pbmltYXRjaCBwYXR0ZXJuc1xuICAgKi9cbiAgZmlsZXM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBCYXNlLWRpcmVjdG9yeSBmb3IgY29weVxuICAgKi9cbiAgICBmcm9tOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRhcmdldCBkaXJlY3RvcnlcbiAgICovXG4gIHRvOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGd1bHAtc2FzcyBvcHRpb25zXG4gICAqL1xuICBzYXNzT3B0aW9ucz86IHtcbiAgICBvdXRwdXRTdHlsZT86IFwiY29tcHJlc3NlZFwiIHwgc3RyaW5nO1xuICB9O1xufVxuXG4vKipcbiAqIFJldHVybiBhIGxpc3Qgb2Ygc291cmNlcywgcHJlZml4ZWQgYnkgXCJmcm9tXCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNvdXJjZXMoe2ZpbGVzLCBmcm9tfTogT3B0aW9ucyk6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGZpbGVzLm1hcCgodmFsOiBzdHJpbmcpOiBzdHJpbmcgPT4gYXNTdHJpbmcoam9pbihmcm9tLCBuZXcgTWluaW1hdGNoKHZhbCkpKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNhc3MoZ3VscDogR3VscCwgb3B0aW9uczogT3B0aW9ucyk6IE5vZGVKUy5SZWFkYWJsZVN0cmVhbSB7XG4gIHJldHVybiBndWxwXG4gICAgLnNyYyhnZXRTb3VyY2VzKG9wdGlvbnMpLCB7YmFzZTogb3B0aW9ucy5mcm9tfSlcbiAgICAucGlwZShndWxwU291cmNlTWFwcy5pbml0KCkpXG4gICAgLnBpcGUoZ3VscFNhc3MoKS5vbihcImVycm9yXCIsIGd1bHBTYXNzLmxvZ0Vycm9yKSlcbiAgICAucGlwZShndWxwU291cmNlTWFwcy53cml0ZSgpKVxuICAgIC5waXBlKGd1bHAuZGVzdChvcHRpb25zLnRvKSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGUgYSB0YXNrIHRvIGJ1aWxkIHB1ZyBmaWxlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVUYXNrKGd1bHA6IEd1bHAsIG9wdGlvbnM6IE9wdGlvbnMpOiBUYXNrRnVuY3Rpb24ge1xuICBjb25zdCB0YXNrOiBUYXNrRnVuY3Rpb24gPSBmdW5jdGlvbiAoKTogTm9kZUpTLlJlYWRhYmxlU3RyZWFtIHtcbiAgICByZXR1cm4gYnVpbGRTYXNzKGd1bHAsIG9wdGlvbnMpO1xuICB9O1xuICB0YXNrLmRpc3BsYXlOYW1lID0gXCJfYnVpbGQ6c2Fzc1wiO1xuICByZXR1cm4gdGFzaztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHdhdGNoKGd1bHA6IEd1bHAsIG9wdGlvbnM6IE9wdGlvbnMpOiBGU1dhdGNoZXIge1xuICBjb25zdCBidWlsZFRhc2s6IFRhc2tGdW5jdGlvbiA9IGdlbmVyYXRlVGFzayhndWxwLCBvcHRpb25zKTtcbiAgY29uc3Qgc291cmNlczogc3RyaW5nW10gPSBnZXRTb3VyY2VzKG9wdGlvbnMpO1xuICByZXR1cm4gZ3VscC53YXRjaChzb3VyY2VzLCB7Y3dkOiBvcHRpb25zLmZyb219LCBidWlsZFRhc2spIGFzIEZTV2F0Y2hlcjtcbn1cbiJdLCJzb3VyY2VSb290IjoiLi4ifQ==