vue-vite-template
Version:
使用vue3.0+vite+js+tailwind 搭建配置的一个空项目模板,欢迎使用
112 lines (108 loc) • 3.7 kB
JavaScript
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import viteSentry from 'vite-plugin-sentry';
import eslint from 'vite-plugin-eslint';
import stylelint from 'vite-plugin-stylelint';
import AutoImport from 'unplugin-auto-import/vite';
import legacy from '@vitejs/plugin-legacy'; // 兼容ie
import { viteCommonjs } from '@originjs/vite-plugin-commonjs';
import viteCompression from 'vite-plugin-compression'; // gzip 压缩
// import svgLoader from 'vite-svg-loader';
import Components from 'unplugin-vue-components/vite';
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers';
import VueSetupExtend from 'vite-plugin-vue-setup-extend';
// import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
import Icons from 'unplugin-icons/vite';
import { FileSystemIconLoader } from 'unplugin-icons/loaders';
import IconsResolver from 'unplugin-icons/resolver';
import { resolve } from 'path';
const packageJson = require('./package.json');
const sentryConfig = {
configFile: './.sentryclirc',
release: packageJson.version, // package.json version 保持同步
deploy: {
env: 'production',
},
skipEnvironmentCheck: true, // 可以跳过环境检查
sourceMaps: {
include: ['./dist/assets'],
ignore: ['node_modules'],
urlPrefix: '~/assets',
},
};
export default ({ mode }) => {
process.env = { ...process.env, ...loadEnv(mode, process.cwd()) };
return defineConfig({
base: process.env.VITE_BASE_PUBLIC_PATH,
server: {
// proxy: {
// '/api': {
// target: 'xxx',
// changeOrigin: true,
// rewrite: (path) => path.replace(/^\/api/, '/api'),
// },
// },
},
plugins: [
// createSvgIconsPlugin({
// iconDirs: [resolve(process.cwd(), 'src/assets/svg/mian')],
// symbolId: 'icon-[name]',
// customDomId: '__svg__icons__dom__',
// }),
eslint({ cache: false }),
stylelint(),
viteCommonjs(),
viteCompression(),
legacy({
targets: ['defaults', 'not IE 11'],
additionalLegacyPolyfills: ['regenerator-runtime/runtime'],
}),
process.env.NODE_ENV === 'production' ? viteSentry(sentryConfig) : null,
// svgLoader(),
Icons({
compiler: 'vue3',
autoInstall: true,
// 自定义图标加载
customCollections: {
// home图标集
// 给svg文件设置fill="currentColor"属性,使图标的颜色具有适应性
home: FileSystemIconLoader('src/assets/svg/mian', (svg) => svg.replace(/^<svg /, '<svg fill="currentColor" ')),
},
}),
vue(),
AutoImport({
resolvers: [ElementPlusResolver({ importStyle: 'sass' })],
}),
Components({
resolvers: [
ElementPlusResolver({ importStyle: 'sass' }),
// Icon自动引入解析器
IconsResolver({
// 自动引入的Icon组件统一前缀,默认为 i,设置false为不需要前缀
prefix: 'icon',
// 当图标集名字过长时,可使用集合别名
alias: {
system: 'system-uicons',
},
}),
],
}),
VueSetupExtend(),
],
css: {
preprocessorOptions: {
scss: {
additionalData: '@use "src/assets/styles/element/index.scss" as *;',
},
},
},
resolve: {
alias: {
'@': resolve(__dirname, 'src'),
},
},
build: {
sourcemap: process.env.NODE_ENV === 'production',
},
});
};