1 import { CSSPlugin, FuseBox, FuseBoxOptions, Sparky } from "fuse-box";
\r
2 import path = require("path");
\r
3 import TsTransformClasscat from "ts-transform-classcat";
\r
4 import TsTransformInferno from "ts-transform-inferno";
\r
6 * Some of FuseBoxOptions overrides by ts config (module, target, etc)
\r
7 * https://fuse-box.org/page/working-with-targets
\r
10 const fuseOptions: FuseBoxOptions = {
\r
12 output: "dist/$name.js",
\r
13 sourceMaps: { inline: false, vendor: false },
\r
15 * Custom TypeScript Transformers (compile Inferno tsx to ts)
\r
18 before: [TsTransformClasscat(), TsTransformInferno()]
\r
21 const fuseClientOptions: FuseBoxOptions = {
\r
25 * https://fuse-box.org/page/css-resource-plugin
\r
26 * Compile Sass {SassPlugin()}
\r
27 * Make .css files modules-like (allow import them like modules) {CSSModules}
\r
28 * Make .css files modules like and allow import it from node_modules too {CSSResourcePlugin}
\r
29 * Use them all and bundle with {CSSPlugin}
\r
34 const fuseServerOptions: FuseBoxOptions = {
\r
37 Sparky.task("clean", () => {
\r
38 /**Clean distribute (dist) folder */
\r
43 Sparky.task("config", () => {
\r
44 fuse = FuseBox.init(fuseOptions);
\r
47 Sparky.task("test", ["&clean", "&config"], () => {
\r
48 fuse.bundle("client/bundle").test("[**/**.test.tsx]", null);
\r
50 Sparky.task("client", () => {
\r
51 fuse.opts = fuseClientOptions;
\r
53 .bundle("client/bundle")
\r
54 .target("browser@esnext")
\r
57 .instructions("> client/index.tsx");
\r
59 Sparky.task("server", () => {
\r
60 /**Workaround. Should be fixed */
\r
61 fuse.opts = fuseServerOptions;
\r
63 .bundle("server/bundle")
\r
65 .target("server@esnext")
\r
66 .instructions("> [server/index.tsx]")
\r
67 .completed(proc => {
\r
69 // tslint:disable-next-line:no-shadowed-variable
\r
70 close: ({ FuseBox }) => FuseBox.import(FuseBox.mainFile).shutdown()
\r
74 Sparky.task("dev", ["&clean", "&config", "&client", "&server"], () => {
\r