diff --git a/scripts/webserver.sh b/scripts/webserver.sh index 6a37062..07eb6e1 100755 --- a/scripts/webserver.sh +++ b/scripts/webserver.sh @@ -1,5 +1,5 @@ cd ../server/ui yarn -yarn build:prod +yarn build cd ../service cargo run diff --git a/server/ui/fuse.js b/server/ui/fuse.js new file mode 100644 index 0000000..a43ac1b --- /dev/null +++ b/server/ui/fuse.js @@ -0,0 +1,53 @@ +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', + }), + 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('dev', ['clean', 'config'], _ => { + fuse.dev(); + app.hmr().watch(); + return fuse.run(); +}); +Sparky.task('prod', ['clean', 'env', 'config'], _ => { + // fuse.dev({ reload: true }); // remove after demo + return fuse.run(); +}); diff --git a/server/ui/package.json b/server/ui/package.json index d74cdc7..02d3bde 100644 --- a/server/ui/package.json +++ b/server/ui/package.json @@ -4,27 +4,22 @@ "description": "A simple UI for Torrents.csv", "main": "index.js", "scripts": { - "build:dev": "webpack", - "build:prod": "webpack -p", - "start": "webpack-dev-server --inline" + "start": "node fuse dev", + "build": "node fuse prod" }, "keywords": [], "author": "Dominic Gannaway", "license": "MIT", "dependencies": { - "inferno": "^5.6.1", - "moment": "^2.22.2" + "inferno": "^6.0.3", + "moment": "^2.22.2", + "classcat": "^1.1.3" }, "devDependencies": { - "classcat": "^3.0.0", - "clean-webpack-plugin": "^0.1.17", - "css-loader": "^1.0.0", - "html-webpack-plugin": "^2.30.1", - "style-loader": "^0.23.1", - "ts-loader": "^3.5.0", + "fuse-box": "^3.1.3", "ts-transform-classcat": "^0.0.2", "ts-transform-inferno": "^3.0.2", - "webpack": "^3.11.0", - "webpack-dev-server": "^2.9.5" + "typescript": "^2.7.1", + "uglify-es": "^3.3.9" } -} +} \ No newline at end of file diff --git a/server/ui/src/index.html b/server/ui/src/index.html index 40bd4c9..eaa950d 100644 --- a/server/ui/src/index.html +++ b/server/ui/src/index.html @@ -16,6 +16,7 @@
+ $bundles