11//@ts -check
2- const { exists, existsSync, readFileSync } = require ( "fs" ) ;
3- const path = require ( "path" ) ;
2+ import { exists , existsSync , readFileSync } from "fs" ;
3+ import { extname , join , basename } from "path" ;
44
5- const PrerenderSPAPlugin = require ( "prerender-spa-plugin" ) ;
6- const Renderer = PrerenderSPAPlugin . PuppeteerRenderer ;
5+ import PrerenderSPAPlugin , { PuppeteerRenderer } from "prerender-spa-plugin" ;
6+ const Renderer = PuppeteerRenderer ;
77
88const CONFIG_OBJ_PATH = "pluginOptions.prerenderSpa" ;
99
10- module . exports = ( api , projectOptions ) => {
10+ export default entry ;
11+ module . exports = entry ;
12+
13+ function entry ( api , projectOptions ) {
1114 api . chainWebpack ( chain ( api , projectOptions ) ) ;
12- } ;
15+ }
1316
1417function chain ( api , projectOptions ) {
1518 return config => {
@@ -25,8 +28,8 @@ function chain(api, projectOptions) {
2528 renderer,
2629 postProcess : renderedRoute => {
2730 const route = renderedRoute . route ;
28- if ( route [ route . length - 1 ] !== "/" && path . extname ( route ) === "" ) {
29- renderedRoute . outputPath = path . join ( paths . outputDir || paths . staticDir , `${ route } .html` ) ;
31+ if ( route [ route . length - 1 ] !== "/" && extname ( route ) === "" ) {
32+ renderedRoute . outputPath = join ( paths . outputDir || paths . staticDir , `${ route } .html` ) ;
3033 }
3134 const userPostProcess =
3235 options . postProcess && typeof options . postProcess === "function" ? options . postProcess : noop ;
@@ -48,8 +51,9 @@ function createRenderer(api, projectOptions) {
4851 const rendererConfig = createRendererConfig ( api , projectOptions ) ;
4952 const renderer = new Renderer ( rendererConfig ) ;
5053 renderer . preServer = Prerenderer => {
51- if ( projectOptions . baseUrl ) {
52- const prefix = projectOptions . baseUrl ;
54+ const publicPath = projectOptions . publicPath || projectOptions . baseUrl ;
55+ if ( publicPath ) {
56+ const prefix = publicPath ;
5357 const server = Prerenderer . _server . _expressServer ;
5458 server . use ( ( req , res , next ) => {
5559 if ( req . url . indexOf ( prefix ) === 0 ) {
@@ -61,9 +65,9 @@ function createRenderer(api, projectOptions) {
6165 if ( projectOptions . pages ) {
6266 const server = Prerenderer . _server . _expressServer ;
6367 server . get ( "*" , ( req , res , next ) => {
64- if ( ! path . extname ( req . url ) ) {
68+ if ( ! extname ( req . url ) ) {
6569 const filePath = api . resolve (
66- `${ projectOptions . outputDir } ${ req . url } ${ path . basename ( req . url ) ? ".html" : "index.html" } `
70+ `${ projectOptions . outputDir } ${ req . url } ${ basename ( req . url ) ? ".html" : "index.html" } `
6771 ) ;
6872 exists ( filePath , exists => ( exists ? res . sendFile ( filePath ) : next ( ) ) ) ;
6973 return ;
@@ -111,8 +115,8 @@ function resolvePaths(api, baseUrl, assetsDir) {
111115 return {
112116 outputDir : api . resolve ( baseUrl ) ,
113117 staticDir : api . resolve ( baseUrl ) ,
114- assetsDir : api . resolve ( path . join ( baseUrl , assetsDir ) ) ,
115- indexPath : api . resolve ( path . join ( baseUrl , process . env . NODE_ENV === "production" ? "app.html" : "index.html" ) )
118+ assetsDir : api . resolve ( join ( baseUrl , assetsDir ) ) ,
119+ indexPath : api . resolve ( join ( baseUrl , process . env . NODE_ENV === "production" ? "app.html" : "index.html" ) )
116120 } ;
117121}
118122
0 commit comments