boilerplate.js
Version:
Development Tools
151 lines (130 loc) • 5.26 kB
JavaScript
////////////////// IMPORTS ////////////////////////
global.gulp = require('gulp');
global.path = require('path');
global.prepend = require('prepend');
global.watch = require('gulp-watch');
global.browserSync = require('browser-sync');
global.watcher = {};
global.REQUIRE = require('./autoload').REQUIRE;
global.fs = require('fs-extra');
global.colors = require('colors');
global.child = require('child_process');
global.config = require('../../config.json');
require('./helpers/import.js');
require('./sitespeed.js');
const jigsaw = require('./jigsaw').init;
const start = require('./start/app.js').start;
const { minify, original } = require('./html-minifier');
const { SASS } = require('./sass');
const { JS, JSWatcher } = require('./javascript');
const { accessibility } = require('./accessibility');
const { stressTest } = require('./loadtest');
const { image } = require('./imagemin');
const { criticalCSS } = require('./criticalcss');
const sprites = require('./sprites');
const { commands } = require('./commands');
const { webfonts } = require('./webfonts');
const external = require('./jsExternal');
//////////////// ./IMPORTS ////////////////////////
function WATCH() {
console.log('\x1Bc');
console.log('\x1b[36m%s\x1b[0m', company);
JSWatcher();
watch((config.css.dir + '/**/*.scss')).on('change', function(file) {
if (file.indexOf('external') < 0) SASS(config.css.input, config.css.output);
});
require('./jsExternal').watch();
require('./sassExternal').watch();
if (config.laravel) {
config.laravelViews = config.laravelViews || './resources/views/**/*.blade.php';
watch((config.laravelViews), browserSync.reload).on('change', function (file) {
try { require('../../config.laravel').init(file); } catch (error) { null; }
}).on('add', function (file) {
try { require('../../config.laravel').init(file); } catch (error) { null; }
}).on('unlink', function (file) {
try { require('../../config.laravel').init(file); } catch (error) { null; }
});
}
if (config.images && watch.images) {
setTimeout(() => {
console.log(`Optimizing Images (${path.resolve(config.images)})`.magenta);
child.fork('./node_modules/boilerplate.js/fork/imagemin.js');
}, 3000);
}
setTimeout(() => {
config.sprites && sprites.watchSprites(config);
}, 2000);
if (config.webfonts) {
fs.ensureDirSync(config.webfonts);
watch((config.webfonts + '/**/*.svg'), function () {
clearTimeout(this.timeout);
this.timeout = setTimeout(() => {
console.log("Creating Webfonts, Please Wait...");
webfonts();
}, 250);
});
}
if (config.jigsaw) {
child.execSync('"./vendor/bin/jigsaw" build');
watch('./source/**/*.blade.php').on('change', function(file) {
var begin = Date.now();
child.execSync('mv "./build_local/assets" "./assets"');
child.execSync('"./vendor/bin/jigsaw" build');
child.execSync('mv "./assets" "./build_local/assets"');
browserSync.reload();
var end = Date.now();
var timeSpent = (end - begin) + "ms";
console.log('Jigsaw Build Complete'.bgBlue.white, timeSpent);
if (config.jigsaw.cache) {
file = path.parse(file);
file.dir = file.dir.split('source')[1];
let dir = file.dir.indexOf('/') >= 0 ? file.dir.split('/') : file.dir.split('\\');
if (dir.indexOf('_') < 0) require('./jigsaw').initFile(dir);
}
return;
});
browserSync.init({
server: {
baseDir: "./build_local"
}
});
return;
}
if (global.browserSyncPATH) {
console.log('\x1b[36m%s\x1b[0m', 'watching ' + path.resolve(config.css.dir + '/**/*.scss'));
console.log('\x1b[36m%s\x1b[0m', 'watching ' + path.resolve(config.js.dir + '/**/*.js'));
browserSync.init({
open: fs.readFileSync(global.browserSyncPATH).toString().trim().length === 0 ? false : 'external',
proxy: {
target: fs.readFileSync(global.browserSyncPATH).toString(),
ws: true, // enables websockets for crossbrowser sync
}
});
}
}
global.test = () => {
const Concat = $REQUIRE('concat-with-sourcemaps');
var concat = new Concat(true, 'app.js', '\n');
concat.add(null, "// (c) Eyemart Express");
concat.add('file1.js', 'function test() { console.log("test"); }');
concat.add('file2.js', 'function main() { console.log("main"); }');
concat.add('file1.js', 'function test2() { console.log("test2"); }');
console.log(concat.sourceMap);
}
module.exports = {
SASS,
WATCH,
minify,
original,
gulp,
JS,
accessibility,
stressTest,
image,
criticalCSS,
commands,
jigsaw,
test,
start,
external
};