vite.config.ts 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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: ['> 0.5%', 'last 2 versions', 'ie > 11', 'iOS >= 10', 'Android >= 5']
  37. })
  38. ]
  39. }
  40. },
  41. plugins: [
  42. vue({
  43. include: [/\.vue$/, /\.md$/]
  44. }),
  45. Markdown({
  46. // default options passed to markdown-it
  47. // see: https://markdown-it.github.io/markdown-it/
  48. markdownItOptions: {
  49. highlight: function (str, lang) {
  50. if (lang && hljs.getLanguage(lang)) {
  51. try {
  52. return hljs.highlight(lang, str).value;
  53. } catch (__) {}
  54. }
  55. return ''; // 使用额外的默认转义
  56. }
  57. }
  58. })
  59. // legacy({
  60. // targets: ['defaults', 'not IE 11']
  61. // })
  62. ],
  63. build: {
  64. target: 'es2015',
  65. outDir: './dist/3x/',
  66. assetsDir: config.version,
  67. cssCodeSplit: true,
  68. rollupOptions: {
  69. input: {
  70. doc: resolve(__dirname, 'index.html'),
  71. mobile: resolve(__dirname, 'demo.html')
  72. }
  73. }
  74. }
  75. });