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