import {defineConfig} from 'vite' import vue from '@vitejs/plugin-vue' import vueJSX from '@vitejs/plugin-vue-jsx' import banner from 'vite-plugin-banner' import cssnano from 'cssnano' import PreprocessorDirectives from 'unplugin-preprocessor-directives/vite'; import cssInjectedByJsPlugin from 'vite-plugin-css-injected-by-js' import {author, name, version} from './package.json' const extnedsPlugins = []; const outDir = 'dist/pc'; function getBanner(banner, pkg) { if (!banner || typeof banner === 'string') { return banner || ''; } banner = {...pkg, ...(banner === true ? {} : banner)}; const author = banner.author return { content: ( '/*!\n' + ' * FormCreate商业版可视化表单设计器-让表单设计更简单\n' + ` * ${banner.name} v${banner.version}\n` + ` * (c) ${author || ''}\n` + ' * license 仅限于被授权主体(个人、企业或组织)使用\n' + ' */' ), outDir }; } const __banner__ = { author: `2018-${new Date().getFullYear()} ${author} https://form-create.com/`, name, version } // 打包生产环境才引入的插件 // if (process.env.NODE_ENV === 'production') { // // 打包依赖展示 // extnedsPlugins.push( // visualizer({ // open: true, // gzipSize: true, // brotliSize: true, // }) // ); // } // https://vitejs.dev/config/ export default defineConfig({ build: { lib: { entry: 'src/index.js', name: 'FcDesigner', fileName: format => `index.${format}.js`, }, rollupOptions: { output: { exports: 'named', globals: { vue: 'Vue', '@form-create/ant-design-vue': 'formCreate', '@form-create/vant': 'formCreateMobile', 'ant-design-vue': 'antd', 'vant': 'vant', } }, external: [ 'vue', 'ant-design-vue', 'vant', '@form-create/ant-design-vue', '@form-create/vant', ], }, outDir, brotliSize: true }, css: { postcss: { plugins: [ cssnano({ preset: 'advanced' }) ] } }, plugins: [PreprocessorDirectives({}), vue(), vueJSX(), banner(getBanner(__banner__)), cssInjectedByJsPlugin(), ...extnedsPlugins] })