vite.config.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import { defineConfig } from 'vite';
  2. import vue from '@vitejs/plugin-vue';
  3. import legacy from '@vitejs/plugin-legacy';
  4. import Markdown from 'vite-plugin-md';
  5. import path from 'path';
  6. import config from './package.json';
  7. const hljs = require('highlight.js'); // https://highlightjs.org/
  8. const resolve = path.resolve;
  9. // https://vitejs.dev/config/
  10. export default defineConfig({
  11. base: '/3x/',
  12. server: {
  13. port: 2021,
  14. proxy: {
  15. '/devServer': {
  16. target: 'https://nutui.jd.com',
  17. changeOrigin: true,
  18. rewrite: (path) => path.replace(/^\/devServer/, '')
  19. }
  20. }
  21. },
  22. resolve: {
  23. alias: [{ find: '@', replacement: resolve(__dirname, './src') }]
  24. },
  25. css: {
  26. preprocessorOptions: {
  27. scss: {
  28. // example : additionalData: `@import "./src/design/styles/variables";`
  29. // dont need include file extend .scss
  30. additionalData: `@import "@/packages/styles/variables.scss";@import "@/sites/assets/styles/variables.scss";`
  31. }
  32. },
  33. postcss: {
  34. plugins: [
  35. require('autoprefixer')({
  36. overrideBrowserslist: [
  37. '> 0.5%',
  38. 'last 2 versions',
  39. 'ie > 11',
  40. 'iOS >= 10',
  41. 'Android >= 5'
  42. ]
  43. })
  44. ]
  45. }
  46. },
  47. plugins: [
  48. vue({
  49. include: [/\.vue$/, /\.md$/]
  50. }),
  51. Markdown({
  52. // default options passed to markdown-it
  53. // see: https://markdown-it.github.io/markdown-it/
  54. markdownItOptions: {
  55. highlight: function (str, lang) {
  56. if (lang && hljs.getLanguage(lang)) {
  57. try {
  58. return hljs.highlight(lang, str).value;
  59. } catch (__) {}
  60. }
  61. return ''; // 使用额外的默认转义
  62. }
  63. }
  64. }),
  65. legacy({
  66. targets: ['defaults', 'not IE 11']
  67. })
  68. ],
  69. build: {
  70. target: 'es2015',
  71. outDir: './dist/3x/',
  72. assetsDir: config.version,
  73. cssCodeSplit: true,
  74. rollupOptions: {
  75. input: {
  76. doc: resolve(__dirname, 'index.html'),
  77. mobile: resolve(__dirname, 'demo.html')
  78. }
  79. }
  80. }
  81. });