"@angular/platform-browser": "~5.1.0",
"@angular/platform-browser-dynamic": "~5.1.0",
"@angular/router": "~5.1.0",
+ "@angularclass/hmr": "^2.1.3",
"@ngx-meta/core": "^4.0.1",
"@types/core-js": "^0.9.28",
"@types/markdown-it": "^0.0.4",
export const environment = {
production: true,
+ hmr: false,
apiUrl: ''
}
export const environment = {
production: false,
+ hmr: true,
apiUrl: 'http://localhost:9000'
}
--- /dev/null
+import { NgModuleRef, ApplicationRef } from '@angular/core'
+import { createNewHosts } from '@angularclass/hmr'
+
+export const hmrBootstrap = (module: any, bootstrap: () => Promise<NgModuleRef<any>>) => {
+ let ngModule: NgModuleRef<any>
+ module.hot.accept()
+ bootstrap()
+ .then(mod => ngModule = mod)
+ module.hot.dispose(() => {
+ const appRef: ApplicationRef = ngModule.injector.get(ApplicationRef)
+ const elements = appRef.components.map(c => c.location.nativeElement)
+ const makeVisible = createNewHosts(elements)
+ ngModule.destroy()
+ makeVisible()
+ })
+}
import { AppModule } from './app/app.module'
import { environment } from './environments/environment'
+import { hmrBootstrap } from './hmr'
+
if (environment.production) {
enableProdMode()
}
-platformBrowserDynamic()
+const bootstrap = () => platformBrowserDynamic()
.bootstrapModule(AppModule)
- .catch(err => console.log(err))
+
+if (environment.hmr) {
+ if (module[ 'hot' ]) {
+ hmrBootstrap(module, bootstrap)
+ } else {
+ console.error('HMR is not enabled for webpack-dev-server!')
+ console.log('Are you using the --hmr flag for ng serve?')
+ }
+} else {
+ bootstrap()
+}
dependencies:
tslib "^1.7.1"
+"@angularclass/hmr@^2.1.3":
+ version "2.1.3"
+ resolved "https://registry.yarnpkg.com/@angularclass/hmr/-/hmr-2.1.3.tgz#34e658ed3da37f23b0a200e2da5a89be92bb209f"
+
"@ngtools/json-schema@1.1.0", "@ngtools/json-schema@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922"
cd client || exit -1
-ng server --host localhost --port 3000
+ng server --hmr --host localhost --port 3000