vite.config.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import postcss from './postcss.config.cjs';
  2. import { defineConfig } from 'vite';
  3. import { svelte } from '@sveltejs/vite-plugin-svelte';
  4. import md from 'rollup-plugin-md';
  5. import svgSprite from 'rollup-plugin-stdf-icon';
  6. // https://vitejs.dev/config/
  7. export default defineConfig({
  8. base: '/',
  9. plugins: [
  10. // @ts-ignore
  11. svelte(),
  12. // @ts-ignore
  13. md({
  14. // to disable marked set to false
  15. marked: {
  16. //marked options
  17. },
  18. include: ['../doc/**/*.md', './src/pages/guide/**/*.md', '../packages/**/*.md'],
  19. }),
  20. svgSprite([{ inFile: 'src/assets/svgs', outFile: 'public/fonts', fileName: 'symbol' }]),
  21. ],
  22. css: { postcss },
  23. server: {
  24. hmr: true,
  25. host: '0.0.0.0',
  26. port: 5555,
  27. // 是否开启 https
  28. https: false,
  29. },
  30. build: {
  31. assetsDir: 'build',
  32. rollupOptions: {
  33. manualChunks: id => {
  34. // 将 node_modules 中的包拆分到单独的 build/node_modules.js 文件中
  35. if (id.includes('node_modules')) {
  36. return 'vendor/index';
  37. }
  38. // 将 src/components/menu 中的包拆分到单独的 build/common/menu/index.js 文件中
  39. if (id.includes('site/src/components/menu')) {
  40. return 'common/menu/index';
  41. }
  42. // 将 src/pages/Home.svelte 单独拆分到 build/home/index.js 文件中
  43. if (id.includes('src/pages/Home.svelte')) {
  44. return 'home/index';
  45. }
  46. // 将 src/pages/guide/Guide.svelte 单独拆分到 build/guide/index.js 文件中
  47. if (id.includes('src/pages/guide/Guide.svelte')) {
  48. return 'guide/index';
  49. }
  50. const guide = [
  51. 'QuickStart',
  52. 'Theme',
  53. 'Faq',
  54. 'Color',
  55. 'Color_en',
  56. 'Icon',
  57. 'Internation',
  58. 'Compatibility',
  59. 'Logo',
  60. 'About',
  61. 'Changelog',
  62. 'Future',
  63. 'Shortkey',
  64. 'Contribution',
  65. 'Milestone',
  66. 'Vscode',
  67. 'Generator',
  68. ];
  69. // 循环遍历 guide 文件夹下的所有文件,将其单独拆分到 build/guide/xxx/index.js 文件中
  70. for (const item of guide) {
  71. if (id.includes(`src/pages/guide/${item}.svelte`)) {
  72. return `guide/${item}/index`;
  73. }
  74. }
  75. // 将 src/pages/components/Components.svelte 单独拆分到 build/components/index.js 文件中
  76. if (id.includes('src/pages/components/Components.svelte')) {
  77. return 'components/index';
  78. }
  79. const components = ['Api', 'Component', 'FAQ', 'Guide', 'Version'];
  80. // 循环遍历 components 文件夹下的所有文件,将其单独拆分到 build/components/xxx/index.js 文件中
  81. for (const item of components) {
  82. if (id.includes(`src/pages/components/${item}.svelte`)) {
  83. return `components/${item}/index`;
  84. }
  85. }
  86. // 如果 id 包含 doc/guide/xxx.md 则单独拆分到 build/doc/guide/xxx/index.js 文件中
  87. if (id.includes('doc/guide/')) {
  88. return 'doc/guide/' + id.match(/doc\/guide\/(.*)\.md/)[1] + '/index';
  89. }
  90. // 如果 id 包含 doc/components/xxx.md 则单独拆分到 build/doc/components/xxx/index.js 文件中
  91. if (id.includes('doc/components/')) {
  92. return 'doc/components/' + id.match(/doc\/components\/(.*)\.md/)[1] + '/index';
  93. }
  94. },
  95. },
  96. },
  97. });