Add hmr
This commit is contained in:
parent
b2731bff28
commit
77d07d6909
|
@ -33,6 +33,7 @@
|
|||
"@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",
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
export const environment = {
|
||||
production: true,
|
||||
hmr: false,
|
||||
apiUrl: ''
|
||||
}
|
||||
|
|
|
@ -5,5 +5,6 @@
|
|||
|
||||
export const environment = {
|
||||
production: false,
|
||||
hmr: true,
|
||||
apiUrl: 'http://localhost:9000'
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
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()
|
||||
})
|
||||
}
|
|
@ -4,10 +4,22 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'
|
|||
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()
|
||||
}
|
||||
|
|
|
@ -158,6 +158,10 @@
|
|||
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"
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
|
||||
cd client || exit -1
|
||||
|
||||
ng server --host localhost --port 3000
|
||||
ng server --hmr --host localhost --port 3000
|
||||
|
|
Loading…
Reference in New Issue