rsnext/packages/next/build/webpack/loaders/next-client-pages-loader.ts
Tobias Koppers 87d0fc9fd7
avoid using absolute paths in import/require (#29797)
Using absolute paths leads to unnecessary watched paths and tested paths for resolving
2021-10-11 08:52:59 +00:00

38 lines
980 B
TypeScript

import loaderUtils from 'next/dist/compiled/loader-utils'
export type ClientPagesLoaderOptions = {
absolutePagePath: string
page: string
}
// this parameter: https://www.typescriptlang.org/docs/handbook/functions.html#this-parameters
function nextClientPagesLoader(this: any) {
const pagesLoaderSpan = this.currentTraceSpan.traceChild(
'next-client-pages-loader'
)
return pagesLoaderSpan.traceFn(() => {
const { absolutePagePath, page } = loaderUtils.getOptions(
this
) as ClientPagesLoaderOptions
pagesLoaderSpan.setAttribute('absolutePagePath', absolutePagePath)
const stringifiedPagePath = loaderUtils.stringifyRequest(
this,
absolutePagePath
)
const stringifiedPage = JSON.stringify(page)
return `
(window.__NEXT_P = window.__NEXT_P || []).push([
${stringifiedPage},
function () {
return require(${stringifiedPagePath});
}
]);
`
})
}
export default nextClientPagesLoader