1
1
//@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" ;
4
4
5
- const PrerenderSPAPlugin = require ( "prerender-spa-plugin" ) ;
6
- const Renderer = PrerenderSPAPlugin . PuppeteerRenderer ;
5
+ import PrerenderSPAPlugin , { PuppeteerRenderer } from "prerender-spa-plugin" ;
6
+ const Renderer = PuppeteerRenderer ;
7
7
8
8
const CONFIG_OBJ_PATH = "pluginOptions.prerenderSpa" ;
9
9
10
- module . exports = ( api , projectOptions ) => {
10
+ export default entry ;
11
+ module . exports = entry ;
12
+
13
+ function entry ( api , projectOptions ) {
11
14
api . chainWebpack ( chain ( api , projectOptions ) ) ;
12
- } ;
15
+ }
13
16
14
17
function chain ( api , projectOptions ) {
15
18
return config => {
@@ -25,8 +28,8 @@ function chain(api, projectOptions) {
25
28
renderer,
26
29
postProcess : renderedRoute => {
27
30
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` ) ;
30
33
}
31
34
const userPostProcess =
32
35
options . postProcess && typeof options . postProcess === "function" ? options . postProcess : noop ;
@@ -48,8 +51,9 @@ function createRenderer(api, projectOptions) {
48
51
const rendererConfig = createRendererConfig ( api , projectOptions ) ;
49
52
const renderer = new Renderer ( rendererConfig ) ;
50
53
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 ;
53
57
const server = Prerenderer . _server . _expressServer ;
54
58
server . use ( ( req , res , next ) => {
55
59
if ( req . url . indexOf ( prefix ) === 0 ) {
@@ -61,9 +65,9 @@ function createRenderer(api, projectOptions) {
61
65
if ( projectOptions . pages ) {
62
66
const server = Prerenderer . _server . _expressServer ;
63
67
server . get ( "*" , ( req , res , next ) => {
64
- if ( ! path . extname ( req . url ) ) {
68
+ if ( ! extname ( req . url ) ) {
65
69
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" } `
67
71
) ;
68
72
exists ( filePath , exists => ( exists ? res . sendFile ( filePath ) : next ( ) ) ) ;
69
73
return ;
@@ -111,8 +115,8 @@ function resolvePaths(api, baseUrl, assetsDir) {
111
115
return {
112
116
outputDir : api . resolve ( baseUrl ) ,
113
117
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" ) )
116
120
} ;
117
121
}
118
122
0 commit comments