wikijs-fork/fuse.js

132 lines
3.6 KiB
JavaScript
Raw Normal View History

2017-03-27 02:07:40 +00:00
'use strict'
/**
* FUSEBOX
*
* Client & Server compiler / bundler / watcher
2017-03-27 02:07:40 +00:00
*/
const colors = require('colors/safe')
const fsbx = require('fuse-box')
const nodemon = require('nodemon')
2017-03-27 02:07:40 +00:00
// ======================================================
2017-03-27 02:07:40 +00:00
// Parse cmd arguments
// ======================================================
2017-03-27 02:07:40 +00:00
const args = require('yargs')
.option('d', {
alias: 'dev',
describe: 'Start in Developer mode',
type: 'boolean'
})
.option('c', {
alias: 'dev-configure',
describe: 'Start in Configure Developer mode',
type: 'boolean'
})
.help('h')
.alias('h', 'help')
.argv
2017-03-27 02:07:40 +00:00
let mode = 'build'
2017-05-13 21:03:32 +00:00
const dev = args.d || args.c
if (args.d) {
console.info(colors.bgWhite.black(' Starting Fuse in DEVELOPER mode... '))
mode = 'dev'
} else if (args.c) {
console.info(colors.bgWhite.black(' Starting Fuse in CONFIGURE DEVELOPER mode... '))
mode = 'dev-configure'
} else {
console.info(colors.bgWhite.black(' Starting Fuse in BUILD mode... '))
}
// ======================================================
// BUILD VARS
// ======================================================
const ALIASES = {
'brace-ext-modelist': 'brace/ext/modelist.js',
'simplemde': 'simplemde/dist/simplemde.min.js',
'socket-io-client': 'socket.io-client/dist/socket.io.js',
'vue': (dev) ? 'vue/dist/vue.js' : 'vue/dist/vue.min.js',
'vue-lodash': 'vue-lodash/dist/vue-lodash.min.js'
}
const SHIMS = {
_preinit: {
source: '.build/_preinit.js',
exports: '_preinit'
},
jquery: {
source: 'node_modules/jquery/dist/jquery.js',
exports: '$'
},
mathjax: {
source: 'node_modules/mathjax/MathJax.js',
exports: 'MathJax'
}
}
// ======================================================
// Global Tasks
// ======================================================
2017-03-27 02:07:40 +00:00
console.info(colors.white('└── ') + colors.green('Running global tasks...'))
let globalTasks = require('./.build/_tasks')
// ======================================================
// Fuse Tasks
// ======================================================
globalTasks.then(() => {
2017-05-13 21:03:32 +00:00
let fuse = fsbx.FuseBox.init({
homeDir: './client',
output: './assets/js/$name.min.js',
alias: ALIASES,
2017-06-11 22:48:46 +00:00
shim: SHIMS,
2017-05-13 21:03:32 +00:00
plugins: [
fsbx.EnvPlugin({ NODE_ENV: (dev) ? 'development' : 'production' }),
fsbx.VuePlugin(),
2017-05-21 03:21:16 +00:00
['.scss', fsbx.SassPlugin({ outputStyle: (dev) ? 'nested' : 'compressed' }), fsbx.CSSPlugin()],
fsbx.BabelPlugin({ comments: false, presets: ['es2015'] }),
2017-05-13 21:03:32 +00:00
fsbx.JSONPlugin(),
!dev && fsbx.UglifyESPlugin({
2017-05-13 21:03:32 +00:00
compress: { unused: false },
output: { 'max_line_len': 1000000 }
})
2017-05-13 21:03:32 +00:00
],
debug: false,
log: true
})
2017-03-29 00:19:01 +00:00
2017-06-12 01:11:01 +00:00
const bundleVendor = fuse.bundle('vendor').instructions('~ index.js') // eslint-disable-line no-unused-vars
2017-06-11 22:48:46 +00:00
const bundleApp = fuse.bundle('app').instructions('!> [index.js]')
2017-05-13 21:03:32 +00:00
const bundleSetup = fuse.bundle('configure').instructions('> configure.js')
2017-05-05 02:41:33 +00:00
2017-05-13 21:03:32 +00:00
switch (mode) {
case 'dev':
bundleApp.watch()
break
case 'dev-configure':
2017-05-13 21:03:32 +00:00
bundleSetup.watch()
break
2017-05-13 21:03:32 +00:00
}
2017-03-27 02:07:40 +00:00
2017-05-13 21:03:32 +00:00
fuse.run().then(() => {
console.info(colors.green.bold('\nAssets compilation + bundling completed.'))
2017-05-05 02:41:33 +00:00
2017-05-13 21:03:32 +00:00
if (dev) {
nodemon({
exec: (args.d) ? 'node server' : 'node wiki configure',
ignore: ['assets/', 'client/', 'data/', 'repo/', 'tests/'],
ext: 'js json',
watch: (args.d) ? ['server'] : ['server/configure.js'],
env: { 'NODE_ENV': 'development' }
})
2017-05-13 21:03:32 +00:00
}
}).catch(err => {
console.error(colors.red(' X Bundle compilation failed! ' + err.message))
process.exit(1)
})
})