| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- import { defineConfig } from 'vite';
- import vue from '@vitejs/plugin-vue';
- import legacy from '@vitejs/plugin-legacy';
- import Markdown from 'vite-plugin-md';
- import path from 'path';
- import config from './package.json';
- const hljs = require('highlight.js'); // https://highlightjs.org/
- import { compressText } from './src/sites/doc/components/demo-block/basedUtil';
- const resolve = path.resolve;
- // https://vitejs.dev/config/
- export default defineConfig({
- base: '/jdt/',
- server: {
- port: 2021,
- host: '0.0.0.0',
- proxy: {
- '/devServer': {
- target: 'https://nutui.jd.com',
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/devServer/, '')
- },
- '/devTheme': {
- target: 'https://nutui.jd.com/theme/source',
- changeOrigin: true,
- rewrite: (path) => path.replace(/^\/devTheme/, '')
- }
- }
- },
- resolve: {
- alias: [{ find: '@', replacement: resolve(__dirname, './src') }]
- },
- css: {
- preprocessorOptions: {
- scss: {
- // example : additionalData: `@import "./src/design/styles/variables";`
- // dont need include file extend .scss
- additionalData: `@import "@/packages/styles/variables-jdt.scss";@import "@/sites/assets/styles/variables.scss";`
- }
- },
- postcss: {
- plugins: [
- require('autoprefixer')({
- overrideBrowserslist: ['> 0.5%', 'last 2 versions', 'ie > 11', 'iOS >= 10', 'Android >= 5']
- })
- ]
- }
- },
- plugins: [
- vue({
- include: [/\.vue$/, /\.md$/]
- }),
- Markdown({
- // default options passed to markdown-it
- // see: https://markdown-it.github.io/markdown-it/
- markdownItOptions: {
- highlight: function (str, lang) {
- if (lang && hljs.getLanguage(lang)) {
- try {
- return hljs.highlight(lang, str).value;
- } catch (__) {}
- }
- return ''; // 使用额外的默认转义
- }
- },
- markdownItSetup(md) {
- md.use(require('markdown-it-container'), 'demo', {
- validate: function (params) {
- return params.match(/^demo\s*(.*)$/);
- },
- render: function (tokens, idx) {
- const m = tokens[idx].info.trim().match(/^demo\s*(.*)$/);
- if (tokens[idx].nesting === 1) {
- // opening tag
- const contentHtml = compressText(tokens[idx + 1].content);
- return `<demo-block data-type="vue" data-value="${contentHtml}">` + md.utils.escapeHtml(m[1]) + '\n';
- } else {
- // closing tag
- return '</demo-block>\n';
- }
- }
- });
- }
- })
- // legacy({
- // targets: ['defaults', 'not IE 11']
- // })
- ],
- build: {
- target: 'es2015',
- outDir: './dist/jdt/',
- // assetsDir: config.version,
- cssCodeSplit: true,
- cssTarget: ['chrome61'],
- rollupOptions: {
- input: {
- // doc: resolve(__dirname, 'index.html'),
- mobile: resolve(__dirname, 'demo.html')
- },
- output: {
- entryFileNames: `demo-${config.version}/[name].js`,
- chunkFileNames: `demo-${config.version}/[name].js`,
- assetFileNames: `demo-${config.version}/[name].[ext]`,
- plugins: []
- }
- }
- }
- });
|