styleguide.config.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. /* eslint-disable filenames/match-regex */
  2. const path = require('path')
  3. const fs = require('fs')
  4. const CopyPlugin = require('copy-webpack-plugin')
  5. const vueConfig = require('./vue.config')
  6. const proxyInConfig = vueConfig.devServer.proxy
  7. const proxy = {}
  8. for (const path in proxyInConfig) {
  9. const p = proxyInConfig[path]
  10. delete p.pathRewrite
  11. proxy[path.replace('/-app-', '')] = p
  12. }
  13. module.exports = {
  14. // set your styleguidist configuration here
  15. title: '信创OA开发手册',
  16. sections: [
  17. {
  18. name: '介绍',
  19. content: 'docs/introduction.md',
  20. },
  21. {
  22. name: '快速上手',
  23. sections: [
  24. {
  25. name: '搭建开发环境',
  26. content: 'docs/setup.md',
  27. },
  28. {
  29. name: '代码规范',
  30. content: 'docs/style-guide.md',
  31. },
  32. {
  33. name: '新建Vue文件',
  34. content: 'docs/create-vue-file.md',
  35. },
  36. {
  37. name: '新增非流程页面',
  38. content: 'docs/new-page.md',
  39. },
  40. {
  41. name: '开发配置页面详情表单',
  42. components: 'src/webform/sd-webform.vue',
  43. },
  44. {
  45. name: '开发流程审批单',
  46. components: 'src/webflow/sd-webflow.vue',
  47. },
  48. {
  49. name: '第三方单点',
  50. content: 'docs/sso.md',
  51. },
  52. {
  53. name: '学习资源',
  54. content: 'docs/resources.md',
  55. },
  56. ],
  57. },
  58. {
  59. name: '定制主题',
  60. content: 'docs/custom-theme.md',
  61. },
  62. {
  63. name: '扩展点',
  64. sections: [
  65. {
  66. name: '介绍',
  67. content: 'docs/extension-points.md',
  68. },
  69. ...fs
  70. .readdirSync('./src/_extension-points')
  71. .filter((dir) => dir !== 'include.md')
  72. .map((dir) => ({
  73. name: dir,
  74. components: `src/_extension-points/${dir}/*.vue`,
  75. })),
  76. ],
  77. },
  78. {
  79. name: '关于组件库',
  80. content: 'docs/components.md',
  81. },
  82. {
  83. name: '组件库',
  84. components: fs
  85. .readdirSync('./src/common/components')
  86. .filter((file) => {
  87. if (!file.endsWith('.vue')) return false
  88. // 不显示在文档中的组件,例如:'sd-attachment'
  89. const excludeComponents = ['sd-data-table-sys']
  90. return !excludeComponents.includes(file.slice(0, -4))
  91. })
  92. .map((file) => {
  93. if (fs.existsSync(`./src/common/components/deprecated/${file}`))
  94. return `src/common/components/deprecated/${file}`
  95. else return `src/common/components/${file}`
  96. }),
  97. },
  98. {
  99. name: '非组件样例',
  100. sections: [
  101. ...fs.readdirSync('./docs/examples').map((file) => {
  102. return {
  103. name: file.replace('.md', ''),
  104. content: 'docs/examples/' + file,
  105. }
  106. }),
  107. ],
  108. },
  109. {
  110. name: 'Demo环境',
  111. content: 'docs/demo-server.md',
  112. },
  113. {
  114. name: '依赖的开源项目',
  115. content: 'docs/dependencies.md',
  116. },
  117. ],
  118. require: [
  119. path.join(__dirname, 'docs/styleguide.js'),
  120. path.join(__dirname, 'docs/styleguide.css'),
  121. ],
  122. getComponentPathLine(componentPath) {
  123. if (componentPath.startsWith('src\\_extension-points'))
  124. return componentPath.replace(/^src/, 'src_custom')
  125. return ''
  126. },
  127. webpackConfig: {
  128. devServer: {
  129. proxy,
  130. // 允许通过域名访问
  131. disableHostCheck: true,
  132. },
  133. plugins: [new CopyPlugin([{ from: 'docs/assets', to: 'assets' }])],
  134. },
  135. usageMode: 'expand',
  136. exampleMode: 'expand',
  137. renderRootJsx: path.join(__dirname, 'docs/styleguide-root.js'),
  138. }