Add hmr
This commit is contained in:
parent
b2731bff28
commit
77d07d6909
|
@ -33,6 +33,7 @@
|
||||||
"@angular/platform-browser": "~5.1.0",
|
"@angular/platform-browser": "~5.1.0",
|
||||||
"@angular/platform-browser-dynamic": "~5.1.0",
|
"@angular/platform-browser-dynamic": "~5.1.0",
|
||||||
"@angular/router": "~5.1.0",
|
"@angular/router": "~5.1.0",
|
||||||
|
"@angularclass/hmr": "^2.1.3",
|
||||||
"@ngx-meta/core": "^4.0.1",
|
"@ngx-meta/core": "^4.0.1",
|
||||||
"@types/core-js": "^0.9.28",
|
"@types/core-js": "^0.9.28",
|
||||||
"@types/markdown-it": "^0.0.4",
|
"@types/markdown-it": "^0.0.4",
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
export const environment = {
|
export const environment = {
|
||||||
production: true,
|
production: true,
|
||||||
|
hmr: false,
|
||||||
apiUrl: ''
|
apiUrl: ''
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,5 +5,6 @@
|
||||||
|
|
||||||
export const environment = {
|
export const environment = {
|
||||||
production: false,
|
production: false,
|
||||||
|
hmr: true,
|
||||||
apiUrl: 'http://localhost:9000'
|
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 { AppModule } from './app/app.module'
|
||||||
import { environment } from './environments/environment'
|
import { environment } from './environments/environment'
|
||||||
|
|
||||||
|
import { hmrBootstrap } from './hmr'
|
||||||
|
|
||||||
if (environment.production) {
|
if (environment.production) {
|
||||||
enableProdMode()
|
enableProdMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
platformBrowserDynamic()
|
const bootstrap = () => platformBrowserDynamic()
|
||||||
.bootstrapModule(AppModule)
|
.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:
|
dependencies:
|
||||||
tslib "^1.7.1"
|
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":
|
"@ngtools/json-schema@1.1.0", "@ngtools/json-schema@^1.1.0":
|
||||||
version "1.1.0"
|
version "1.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922"
|
resolved "https://registry.yarnpkg.com/@ngtools/json-schema/-/json-schema-1.1.0.tgz#c3a0c544d62392acc2813a42c8a0dc6f58f86922"
|
||||||
|
|
|
@ -2,4 +2,4 @@
|
||||||
|
|
||||||
cd client || exit -1
|
cd client || exit -1
|
||||||
|
|
||||||
ng server --host localhost --port 3000
|
ng server --hmr --host localhost --port 3000
|
||||||
|
|
Loading…
Reference in New Issue