index.mjs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #!/usr/bin/env node
  2. import {marked} from 'marked'
  3. import hljs from 'highlight.js'
  4. import fs from 'node:fs'
  5. import path from 'node:path'
  6. import run from './html2pdf.mjs'
  7. // import 'highlight.js/styles/github.css';
  8. marked.setOptions({
  9. renderer: new marked.Renderer(),
  10. highlight: function(code, lang) {
  11. const language = hljs.getLanguage(lang) ? lang : 'plaintext';
  12. return hljs.highlight(code, { language }).value;
  13. },
  14. langPrefix: 'hljs language-', // highlight.js css expects a top-level 'hljs' class.
  15. pedantic: false,
  16. gfm: true,
  17. breaks: false,
  18. sanitize: false,
  19. smartLists: true,
  20. smartypants: false,
  21. xhtml: false
  22. });
  23. const filePath = `${process.env.PWD}/${process.argv[2]}`
  24. const markdownString = fs.readFileSync(filePath, 'utf8')
  25. const fileName = `${filePath}`.replace('.md','.html')
  26. let html = marked.parse(markdownString)
  27. console.log(27, html);
  28. html = html.replace(/!\[\[(.*)\]\]/g, '<img src="$1" />')
  29. html = `
  30. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/atom-one-dark.min.css">
  31. <!-- <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/styles/default.min.css"> -->
  32. <style>
  33. *{
  34. font-family: "PingFang TC";
  35. }
  36. h2 {
  37. margin-bottom: 5px;
  38. }
  39. h3 {
  40. margin-bottom: 0;
  41. }
  42. p{
  43. margin: 5px 0;
  44. }
  45. ol{
  46. margin: 5px 0;
  47. }
  48. </style>
  49. <body>
  50. ${ html }
  51. </body>
  52. <script src="./highlight.min.js"></script>
  53. <script>hljs.highlightAll();</script>
  54. `
  55. // // <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.11.1/highlight.min.js"></script>
  56. try {
  57. fs.unlinkSync(fileName);
  58. } catch ( e ) {
  59. console.log(e)
  60. }
  61. fs.writeFile(fileName, html, { flag: 'a+' }, (err) => {
  62. if (err) throw err;
  63. run(fileName)
  64. })
  65. // console.log(marked.parse(markdownString));
  66. // import github from 'highlight.js/styles/github.css'
  67. // const github = fs.readFileSync('highlight.js/styles/github.css', 'utf8')
  68. // console.log(github)