From 816aa0b15f3766e340d8722f03e8b3a7633ab6fb Mon Sep 17 00:00:00 2001 From: Dessalines Date: Wed, 20 Mar 2019 18:22:31 -0700 Subject: Adding initial UI and Websocket server. --- ui/fuse.js | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 ui/fuse.js (limited to 'ui/fuse.js') diff --git a/ui/fuse.js b/ui/fuse.js new file mode 100644 index 00000000..ff1e6d15 --- /dev/null +++ b/ui/fuse.js @@ -0,0 +1,55 @@ +const { + FuseBox, + Sparky, + EnvPlugin, + CSSPlugin, + WebIndexPlugin, + QuantumPlugin +} = require('fuse-box'); +// const transformInferno = require('../../dist').default +const transformInferno = require('ts-transform-inferno').default; +const transformClasscat = require('ts-transform-classcat').default; +let fuse, app; +let isProduction = false; + +Sparky.task('config', _ => { + fuse = new FuseBox({ + homeDir: 'src', + hash: isProduction, + output: 'dist/$name.js', + experimentalFeatures: true, + cache: !isProduction, + sourceMaps: !isProduction, + transformers: { + before: [transformClasscat(), transformInferno()], + }, + plugins: [ + EnvPlugin({ NODE_ENV: isProduction ? 'production' : 'development' }), + CSSPlugin(), + WebIndexPlugin({ + title: 'Inferno Typescript FuseBox Example', + template: 'src/index.html', + path: isProduction ? "/static" : "/" + }), + isProduction && + QuantumPlugin({ + bakeApiIntoBundle: 'app', + treeshake: true, + uglify: true, + }), + ], + }); + app = fuse.bundle('app').instructions('>index.tsx'); +}); +Sparky.task('clean', _ => Sparky.src('dist/').clean('dist/')); +Sparky.task('env', _ => (isProduction = true)); +Sparky.task('copy-assets', () => Sparky.src('assets/*.ico').dest('dist/')); +Sparky.task('dev', ['clean', 'config', 'copy-assets'], _ => { + fuse.dev(); + app.hmr().watch(); + return fuse.run(); +}); +Sparky.task('prod', ['clean', 'env', 'config', 'copy-assets'], _ => { + // fuse.dev({ reload: true }); // remove after demo + return fuse.run(); +}); -- cgit v1.2.3