You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
114 lines
2.6 KiB
114 lines
2.6 KiB
//@format |
|
const yaml = require("js-yaml"); |
|
const fs = require("fs"); |
|
const { SITE, PORT, BSREWRITE, PATHS } = loadConfig(); |
|
//var server = require('browser-sync').create(); |
|
//global.server = server; |
|
const gulp = require("gulp"); |
|
const plumber = require("gulp-plumber"); |
|
const autoprefixer = require("gulp-autoprefixer"); |
|
const sass = require("gulp-sass")(require("sass")); |
|
const browsersync = require("browser-sync").create(); |
|
const sourcemaps = require("gulp-sourcemaps"); |
|
const cleanCSS = require("gulp-clean-css"); |
|
const sassGlob = require("gulp-sass-glob"); |
|
|
|
function loadConfig() { |
|
var ymlFile = fs.readFileSync("config.yml", "utf8"); |
|
return yaml.load(ymlFile); |
|
} |
|
|
|
// BrowserSync |
|
function bsInit__local(done) { |
|
browsersync.init({ |
|
logLevel: "debug", |
|
proxy: SITE.Local.Url, |
|
//proxy: 'https://d10_dev.lndo.site/', |
|
}); |
|
done(); |
|
} |
|
|
|
function bsInit__remote(done) { |
|
browsersync.init({ |
|
//logLevel: 'debug', |
|
proxy: SITE.Remote.Url, |
|
serveStatic: ["."], |
|
files: PATHS.Watch, |
|
plugins: ["bs-rewrite-rules"], |
|
rewriteRules: [ |
|
{ |
|
match: BSREWRITE.Css.Match, |
|
replace: BSREWRITE.Css.Replace, |
|
}, |
|
{ |
|
match: BSREWRITE.Js.Match, |
|
replace: BSREWRITE.Js.Replace, |
|
}, |
|
], |
|
}); |
|
done(); |
|
} |
|
|
|
// BrowserSync Reload |
|
function bsReload(done) { |
|
browsersync.reload(); |
|
done(); |
|
} |
|
|
|
var cp = require("child_process"); |
|
function drush() { |
|
return cp.exec("lando drush cr"); |
|
} |
|
|
|
// Compile CSS |
|
function styles() { |
|
"use strict"; |
|
return ( |
|
gulp |
|
//.src(PATHS.Scss.Dir + '/**/*.scss') |
|
.src("./css/sass/**/*.scss") |
|
.pipe(sassGlob()) |
|
.pipe(plumber()) |
|
.pipe(sourcemaps.init()) |
|
.pipe( |
|
sass |
|
.sync({ |
|
includePaths: PATHS.Scss.Libraries, |
|
}) |
|
.on("error", sass.logError) |
|
) |
|
//.pipe(cleanCSS()) |
|
.pipe(sourcemaps.write(".")) |
|
//.pipe(gulp.dest(PATHS.Css.Dir)) |
|
.pipe(gulp.dest("./css")) |
|
.pipe(browsersync.stream()) |
|
); |
|
} |
|
|
|
// Watch Files |
|
function watchFiles() { |
|
"use strict"; |
|
//gulp.watch(PATHS.Scss.Dir + '/**/*.scss', styles); |
|
gulp.watch("css/sass/**/*.scss", styles); |
|
gulp.watch("./templates/**/*.twig", drush); |
|
} |
|
|
|
// Group complex tasks |
|
const build = gulp.parallel(styles); |
|
const watch_remote = gulp.series( |
|
styles, |
|
gulp.parallel(watchFiles, bsInit__remote) |
|
); |
|
const watch_local = gulp.series( |
|
styles, |
|
gulp.parallel(watchFiles, bsInit__local) |
|
); |
|
|
|
// Export tasks |
|
exports.build = build; |
|
exports.styles = styles; |
|
exports.drush = drush; |
|
exports.watch = watch_remote; |
|
exports.remote = watch_remote; |
|
exports.local = watch_local; |
|
exports.default = watch_remote;
|
|
|