插件
vite-plugin-react-js-support: vite对jsx语法只认tsx和jsx后缀的文件,可是项目中有很多js类型的文件也是jsx
@vitejs/plugin-react-refresh: vite 支持 react 的热更新插件代码
@vitejs/plugin-legacy: 为打包后的文件提供传统浏览器兼容性支持
vite-plugin-style-import: 该插件可按需导入组件库样式
开启别名
resolve: {
alias: [
{
find: /\/@\//,
replacement: pathResolve('src') + '/',
},
{
find: /\/#\//,
replacement: pathResolve('types') + '/',
},
],
},
开启服务
server: {
host: '0.0.0.0',
proxy: {},
hmr: {
host: 'localhost',
},
cors: true,
}
具体配置代码
import vitePluginReactJsSupport from 'vite-plugin-react-js-support';
import reactRefresh from '@vitejs/plugin-react-refresh';
import legacyPlugin from '@vitejs/plugin-legacy';
import styleImport from 'vite-plugin-style-import';
import createSvgSpritePlugin from 'vite-plugin-svg-sprite';
import path from 'path';
function pathResolve(dir) {
return path.resolve(process.cwd(), '.', dir);
}
export default ({ command, mode }) => {
let rollupOptions = {};
if (command === 'serve') {
rollupOptions.input = [];
}
return {
base: 'h5-vite',
root: './',
resolve: {
alias: [
{
find: /\/@\//,
replacement: pathResolve('src') + '/',
},
{
find: /\/#\//,
replacement: pathResolve('types') + '/',
},
],
},
server: {
host: '0.0.0.0',
proxy: {},
hmr: {
host: 'localhost',
},
cors: true,
},
build: {
target: 'es2015',
minify: 'terser',
mainfest: false,
sourcemap: false,
outDir: "build",
rollupOptions,
},
esbuild: {},
optimizeDeps: {},
css: {
preprocessorOptions: {
less: {
javascriptEnabled: true,
},
},
},
plugins: [
styleImport({
libs: [
{
libraryName: 'antd',
esModule: true,
resolveStyle: (name) => {
return `antd/es/${name}/style/index`;
},
},
{
libraryName: 'vant',
esModule: true,
resolveStyle: (name) => {
return `vant/es/${name}/style`;
},
},
]
}),
createSvgSpritePlugin({
symbolId: '[name]',
}),
vitePluginReactJsSupport([], { jsxInject: false }),
reactRefresh(),
legacyPlugin({
targets: [
'Android > 39',
'Chrome >= 60',
'Safari >= 10.1',
'IOS >= 10.3',
'Firefox >= 54',
'Edge >= 15',
]
}),
]
}
}