UNPKG

boilerplate.js

Version:

Development Tools

151 lines (130 loc) 5.26 kB
////////////////// 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 };