5a0dcbc95b
* Update pages-loader to return one value * de-dupe page mod update also
29 lines
933 B
TypeScript
29 lines
933 B
TypeScript
import { loader } from 'webpack'
|
|
import loaderUtils from 'loader-utils'
|
|
|
|
export type ClientPagesLoaderOptions = {
|
|
absolutePagePath: string
|
|
page: string
|
|
}
|
|
|
|
const nextClientPagesLoader: loader.Loader = function() {
|
|
const { absolutePagePath, page }: any = loaderUtils.getOptions(this)
|
|
const stringifiedAbsolutePagePath = JSON.stringify(absolutePagePath)
|
|
const stringifiedPage = JSON.stringify(page)
|
|
|
|
return `
|
|
(window.__NEXT_P=window.__NEXT_P||[]).push([${stringifiedPage}, function() {
|
|
var mod = require(${stringifiedAbsolutePagePath})
|
|
if(module.hot) {
|
|
module.hot.accept(${stringifiedAbsolutePagePath}, function() {
|
|
if(!next.router.components[${stringifiedPage}]) return
|
|
var updatedPage = require(${stringifiedAbsolutePagePath})
|
|
next.router.update(${stringifiedPage}, updatedPage)
|
|
})
|
|
}
|
|
return mod
|
|
}]);
|
|
`
|
|
}
|
|
|
|
export default nextClientPagesLoader
|