1
+ /* global marked */
2
+ import '../marked.min.js' ;
1
3
import { promises } from 'fs' ;
2
4
import { join , dirname , parse , format } from 'path' ;
3
- import { Marked } from './lib/marked.esm.js' ;
4
5
import { markedHighlight } from 'marked-highlight' ;
5
6
import { HighlightJS } from 'highlight.js' ;
6
7
import titleize from 'titleize' ;
@@ -13,7 +14,7 @@ const outputDir = join(cwd, 'public');
13
14
const templateFile = join ( inputDir , '_document.html' ) ;
14
15
const isUppercase = str => / [ A - Z _ ] + / . test ( str ) ;
15
16
const getTitle = str => str === 'INDEX' ? '' : titleize ( str . replace ( / _ / g, ' ' ) ) + ' - ' ;
16
- const marked = new Marked ( markedHighlight ( ( code , language ) => {
17
+ const markedInstance = new marked . Marked ( markedHighlight ( ( code , language ) => {
17
18
if ( ! language ) {
18
19
return highlightAuto ( code ) . value ;
19
20
}
@@ -24,28 +25,38 @@ async function init() {
24
25
console . log ( 'Cleaning up output directory ' + outputDir ) ;
25
26
await rm ( outputDir , { force : true , recursive : true } ) ;
26
27
await mkdir ( outputDir ) ;
28
+ console . log ( `Copying file ${ join ( inputDir , 'LICENSE.md' ) } ` ) ;
27
29
await copyFile ( join ( cwd , 'LICENSE.md' ) , join ( inputDir , 'LICENSE.md' ) ) ;
30
+ console . log ( `Copying file ${ join ( outputDir , 'marked.min.js' ) } ` ) ;
31
+ await copyFile ( join ( cwd , 'marked.min.js' ) , join ( outputDir , 'marked.min.js' ) ) ;
28
32
const tmpl = await readFile ( templateFile , 'utf8' ) ;
29
33
console . log ( 'Building markdown...' ) ;
30
34
await build ( inputDir , tmpl ) ;
31
35
console . log ( 'Build complete!' ) ;
32
36
}
33
37
38
+ const ignoredFiles = [
39
+ join ( cwd , 'docs' , 'build.js' ) ,
40
+ join ( cwd , 'docs' , '.eslintrc.json' ) ,
41
+ join ( cwd , 'docs' , '_document.html' )
42
+ ] ;
43
+
34
44
async function build ( currentDir , tmpl ) {
35
45
const files = await readdir ( currentDir ) ;
36
46
for ( const file of files ) {
37
47
const filename = join ( currentDir , file ) ;
48
+ if ( ignoredFiles . includes ( filename ) ) {
49
+ continue ;
50
+ }
38
51
const stats = await stat ( filename ) ;
39
52
const { mode } = stats ;
40
53
if ( stats . isDirectory ( ) ) {
41
- // console.log('Found directory ' + filename);
42
54
await build ( filename , tmpl ) ;
43
55
} else {
44
- // console.log('Reading file ' + filename);
45
56
let html = await readFile ( filename , 'utf8' ) ;
46
57
const parsed = parse ( filename ) ;
47
58
if ( parsed . ext === '.md' && isUppercase ( parsed . name ) ) {
48
- const mdHtml = marked . parse ( html ) ;
59
+ const mdHtml = markedInstance . parse ( html ) ;
49
60
html = tmpl
50
61
. replace ( '<!--{{title}}-->' , getTitle ( parsed . name ) )
51
62
. replace ( '<!--{{content}}-->' , mdHtml ) ;
@@ -55,7 +66,6 @@ async function build(currentDir, tmpl) {
55
66
}
56
67
parsed . dir = parsed . dir . replace ( inputDir , outputDir ) ;
57
68
const outfile = format ( parsed ) ;
58
- // console.log('Ensure directory ' + dirname(outfile));
59
69
await mkdir ( dirname ( outfile ) , { recursive : true } ) ;
60
70
console . log ( 'Writing file ' + outfile ) ;
61
71
await writeFile ( outfile , html , { mode } ) ;
0 commit comments