@@ -5,74 +5,31 @@ import { FuseBox, JSONPlugin, QuantumPlugin } from 'fuse-box'
55import { resolve } from 'path'
66import { NgProdPlugin } from '../fusebox/ng.prod.plugin'
77import { NgPolyfillPlugin } from '../fusebox/ng.polyfill.plugin'
8+ import { NgCompilerPlugin } from '../fusebox/ng.compiler.plugin'
89import readConfig_ from '../utilities/read-config'
910
10- // function test() {
11- // // const fuseBrowser = FuseBox.init({
12- // // homeDir: "src/browser",
13- // // output: ".dist/public/js/$name.js",
14- // // target: 'browser@es5',
15- // // plugins: [
16- // // // NgProdPlugin({ enabled: opts.productionBuild }),
17- // // // NgPolyfillPlugin(),
18- // // // NgCompilerPlugin({ enabled: opts.enableAotCompilaton }),
19- // // // NgOptimizerPlugin({ enabled: opts.enableAngularBuildOptimizer }),
20- // // // opts.productionBuild && QuantumPlugin({
21- // // // warnings: false,
22- // // // uglify: false,
23- // // // treeshake: false,
24- // // // bakeApiIntoBundle: 'vendor'
25- // // // // replaceProcessEnv: false,
26- // // // // processPolyfill: true,
27- // // // // ensureES5: true
28- // // // })
29- // // ] as any
30- // // })
31-
32- // const fuseServer = FuseBox.init({
33- // target: 'server@es5',
34- // homeDir,
35- // output: `${outputDir}/$name.js`,
36- // plugins: [
37- // // NgProdPlugin({ enabled: opts.productionBuild, fileTest: 'server.angular.module' }),
38- // // NgPolyfillPlugin({ isServer: true, fileTest: 'server.angular.module' })
39- // ]
40- // })
41-
42- // // const mainAppEntry = opts.enableAotCompilaton
43- // // ? 'main.aot.ts'
44- // // : 'main.ts'
45-
46- // // fuseBrowser
47- // // .bundle('vendor')
48- // // .instructions(` ~ ${mainAppEntry}`)
49-
50- // // fuseBrowser
51- // // .bundle('app')
52- // // .watch('src/**')
53- // // .instructions(` !> [${mainAppEntry}]`)
54-
55- // fuseServer
56- // .bundle("server")
57- // .watch("src/**")
58- // .instructions(" > [server/server.ts]")
59- // .completed(proc => proc.start())
60- // }
61-
6211command (
63- 'serve [port][prod]' ,
12+ 'serve [port][prod][aot][sw] ' ,
6413 'serve your application' ,
6514 args => {
6615 return args
6716 } ,
6817 args => {
69- serve ( args . prod )
18+ serve ( args . prod , args . aot )
7019 }
7120)
7221 . option ( 'prod' , {
7322 default : false ,
7423 description : 'Run with optimizations enabled'
7524 } )
25+ . option ( 'aot' , {
26+ default : false ,
27+ description : 'Pass through AOT Compiler'
28+ } )
29+ . option ( 'sw' , {
30+ default : false ,
31+ description : 'Enable service-worker'
32+ } )
7633 . option ( 'port' , {
7734 default : 5000 ,
7835 description : 'Http server port number'
@@ -82,7 +39,7 @@ function logServeCommandStart() {
8239 logInfo ( 'Launching Serve Command' )
8340}
8441
85- function serve ( isProdBuild = false ) {
42+ function serve ( isProdBuild = false , isAotBuild = false ) {
8643 readConfig_ ( )
8744 . pipe (
8845 tap ( logServeCommandStart ) ,
@@ -91,10 +48,14 @@ function serve(isProdBuild = false) {
9148 . subscribe ( config => {
9249 const cache = ! isProdBuild
9350 const log = config . fusebox . verbose || false
94- const homeDir = resolve ( config . fusebox . server . homeDir )
51+ const homeDir = resolve ( '.' )
9552 const serverOutput = resolve ( config . fusebox . server . outputDir )
9653 const browserOutput = resolve ( config . fusebox . browser . outputDir )
9754 const modulesFolder = resolve ( process . cwd ( ) , 'node_modules' )
55+ const watchDir = `${ homeDir } /src/**`
56+ const browserModule = isAotBuild
57+ ? config . fusebox . browser . aotBrowserModule
58+ : config . fusebox . browser . browserModule
9859
9960 const fuseBrowser = FuseBox . init ( {
10061 log,
@@ -103,10 +64,11 @@ function serve(isProdBuild = false) {
10364 cache,
10465 output : `${ browserOutput } /$name.js` ,
10566 target : 'browser@es5' ,
67+ useTypescriptCompiler : true ,
10668 plugins : [
10769 NgProdPlugin ( { enabled : isProdBuild } ) ,
70+ NgCompilerPlugin ( { enabled : isAotBuild } ) ,
10871 NgPolyfillPlugin ( ) ,
109- // NgCompilerPlugin({ enabled: opts.enableAotCompilaton }),
11072 // NgOptimizerPlugin({ enabled: opts.enableAngularBuildOptimizer }),
11173 isProdBuild &&
11274 QuantumPlugin ( {
@@ -131,29 +93,29 @@ function serve(isProdBuild = false) {
13193 plugins : [
13294 JSONPlugin ( ) ,
13395 NgProdPlugin ( {
134- enabled : isProdBuild ,
135- fileTest : 'server.angular.module'
96+ enabled : true ,
97+ fileTest : 'server.angular.module.ts '
13698 } ) ,
13799 NgPolyfillPlugin ( {
138100 isServer : true ,
139- fileTest : 'server.angular.module'
101+ fileTest : 'server.angular.module.ts '
140102 } )
141103 ]
142104 } )
143105
144106 fuseBrowser
145107 . bundle ( 'vendor' )
146- . watch ( `**` )
147- . instructions ( ` ~ ${ config . fusebox . browser . browserModule } ` )
108+ . watch ( watchDir )
109+ . instructions ( ` ~ ${ browserModule } ` )
148110
149111 fuseBrowser
150112 . bundle ( 'app' )
151- . watch ( `**` )
152- . instructions ( ` !> [${ config . fusebox . browser . browserModule } ]` )
113+ . watch ( watchDir )
114+ . instructions ( ` !> [${ browserModule } ]` )
153115
154116 fuseServer
155117 . bundle ( 'server' )
156- . watch ( `**` )
118+ . watch ( watchDir )
157119 . instructions ( ` > [${ config . fusebox . server . serverModule } ]` )
158120 . completed ( proc => proc . start ( ) )
159121
0 commit comments