vite 全局追加loading
【代码】vite 全局追加loading。
·
import * as fs from 'node:fs';
import path from 'node:path';
import normallize from 'normalize-path';
import type { PluginOption } from 'vite';
import { defaultPagesRE } from './app-provider'
export default function insertLoading() {
const template = fs.readFileSync(normalizePagePathFromBase('./src/layout/AppProvider.vue'), 'utf-8');
return <PluginOption>{
name: 'insert-loading',
transform(code, id) {
id = normalizePagePathFromBase(id);
const regResult = defaultPagesRE.exec(id);
if (regResult) {
const oldTemplate = /<template>([\s\S]*)<\/template>/.exec(code);
const tempString = oldTemplate != null ? oldTemplate[1] : '';
const newTemplate = template.replace('<!-- template -->', tempString as string);
code = code.replace(/<template>([\s\S]*)<\/template>/, newTemplate);
}
return code;
},
};
function normalizePagePathFromBase(file: string) {
return normallize(path.relative(process.cwd(), file));
}
}
<template>
<view>
<LoadingPage></LoadingPage>
<!-- template -->
</view>
</template>
注意追加的插件在uni之前
plugins: [
AutoImportTypes(),
PiniaAutoRefs(),
AutoImport({
dts: 'src/auto-imports.d.ts',
imports: [
'vue',
'uni-app',
'pinia',
{
'@/helper/pinia-auto-refs': ['useStore'],
},
],
exclude: ['createApp'],
eslintrc: {
enabled: true,
},
}),
Components({
extensions: ['vue'],
dts: 'src/components.d.ts',
}),
// 上面写的插件
insertLoading(),
// uni支持(兼容性写法,当type为module时,必须要这样写)
(uniPlugin as any).default(),
Unocss(),
],
更多推荐

所有评论(0)