1
1
import liveServer from 'live-server' ;
2
+ import { qualifyURL } from './packages/docsify-server-renderer/src/utils' ;
2
3
3
4
const isSSR = ! ! process . env . SSR ;
4
5
const middleware = [ ] ;
6
+ const port = 3000 ;
5
7
6
8
main ( ) ;
7
9
@@ -10,7 +12,7 @@ async function main() {
10
12
// Using JSDom here because the server relies on a small subset of DOM APIs.
11
13
// The URL used here serves no purpose other than to give JSDOM an HTTP
12
14
// URL to operate under (it probably can be anything).
13
- initJSDOM ( '' , { url : 'https ://127.0.0.1:3000' } ) ;
15
+ initJSDOM ( '' , { url : 'http ://127.0.0.1:' + port } ) ;
14
16
15
17
const { Renderer, getServerHTMLTemplate } = await import (
16
18
'./packages/docsify-server-renderer/index'
@@ -21,7 +23,9 @@ async function main() {
21
23
config : {
22
24
name : 'docsify' ,
23
25
repo : 'docsifyjs/docsify' ,
24
- basePath : 'https://docsify.js.org/' ,
26
+ // Do not use URLs for SSR mode. Specify only an absolute or relative file path.
27
+ // basePath: 'https://docsify.js.org/',
28
+ basePath : '/docs' , // TODO if not set while in SSR mode, code tries to operate on an undefined value. Set a default.
25
29
loadNavbar : true ,
26
30
loadSidebar : true ,
27
31
subMaxLevel : 3 ,
@@ -35,16 +39,25 @@ async function main() {
35
39
} ,
36
40
} ) ;
37
41
38
- middleware . push ( function ( req , res , next ) {
39
- if ( / \. ( c s s | j s ) $ / . test ( req . url ) ) {
40
- return next ( ) ;
42
+ middleware . push ( function ( req , res , next ) {
43
+ const url = new URL ( qualifyURL ( req . url ) ) ;
44
+
45
+ // Only handle markdown files or folders.
46
+ if ( / ( \. m d | \/ [ ^ . ] * ) $ / . test ( url . pathname ) ) {
47
+ // ^ See the related getFileName() function.
48
+ renderer . renderToString ( req . url ) . then ( html => res . end ( html ) ) ;
49
+ return ;
41
50
}
42
- renderer . renderToString ( req . url ) . then ( ( html ) => res . end ( html ) ) ;
51
+
52
+ // TODO there *must* be edge cases. Add an option to force certain files?
53
+ console . log ( 'Skipping markdown handling of file ' + req . url ) ;
54
+
55
+ return next ( ) ;
43
56
} ) ;
44
57
}
45
58
46
59
const params = {
47
- port : 3000 ,
60
+ port,
48
61
watch : [ 'lib' , 'docs' , 'themes' ] ,
49
62
middleware,
50
63
} ;
0 commit comments