index.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. const path = require('path')
  2. const { merge } = require('lodash')
  3. const logger = require('./logger.js')
  4. const fs = require('fs')
  5. const fsExtra = require('fs-extra')
  6. const uglify = require('uglify-js')
  7. const dir = path.resolve(__dirname, '../resources/js')
  8. if (!fs.existsSync(dir)) fsExtra.mkdirp(dir)
  9. const jsFiles = fs.readdirSync(path.resolve(__dirname, '../resources/js'))
  10. .filter(file => !['all.js', 'docsify.js'].includes(file))
  11. .map(file => path.resolve(__dirname, '../resources/js/' + file))
  12. .filter(file => file.endsWith('.js'))
  13. logger.info(jsFiles)
  14. const uglified = uglify.minify(jsFiles.map(file => fs.readFileSync(file, 'utf8')))
  15. fs.writeFileSync(path.resolve(__dirname, '../resources/js/all.js'), uglified.code)
  16. const defaultConfig = {
  17. pathToStatic: 'docs/temp',
  18. mainMdFilename: 'main.md',
  19. pathToPublic: process.env.PDF_OUTPUT_NAME ? path.join('./pdf/', process.env.PDF_OUTPUT_NAME) : './pdf/DOC.pdf',
  20. contents: 'docs/_sidebar.md',
  21. pathToDocsifyEntryPoint: 'docs',
  22. cover: 'resources/cover.pdf'
  23. }
  24. const run = async () => {
  25. const docsifyRendererPort = 17000
  26. const docsifyLiveReloadPort = 18000
  27. logger.info('Build with settings:')
  28. console.log(defaultConfig)
  29. console.log('\n')
  30. const config = merge(defaultConfig, { docsifyRendererPort, docsifyLiveReloadPort })
  31. const { closeProcess, prepareEnv, cleanUp } = require('./utils.js')(config)
  32. const { createRoadMap } = require('./contents-builder.js')(config)
  33. const { combineMarkdowns } = require('./markdown-combine.js')(config)
  34. const { runDocsifyRenderer } = require('./docsify-server.js')(config)
  35. const { htmlToPdf } = require('./render.js')(config)
  36. try {
  37. await cleanUp()
  38. await prepareEnv()
  39. const roadMap = await createRoadMap()
  40. await combineMarkdowns(roadMap)
  41. console.log("combine markdown finish!")
  42. runDocsifyRenderer()
  43. await htmlToPdf()
  44. logger.success(path.resolve(config.pathToPublic))
  45. } catch (error) {
  46. logger.err('run error', error)
  47. } finally {
  48. await closeProcess(0)
  49. }
  50. }
  51. module.exports = run