import type { PluginOption } from 'vite'; import * as fs from 'node:fs'; import path from 'node:path'; import * as process from 'node:process'; import normallize from 'normalize-path'; // export const defaultPagesRE = /src[/\\]pages(.*)[/\\](.*)[/\\](.*)\.vue$/; export const defaultPagesRE = /src[/\\]pages([^/\\]*)[/\\]([^/\\]*)[/\\](.*)\.vue$/; export interface Options { pagesRE: RegExp name: string configPath: string pluginName: string DEBUG: boolean } export default function (options: Partial = {}) { const { pagesRE = defaultPagesRE, name = './src/layout/AppProvider.vue', pluginName = 'AppProvider', // DEBUG = process.env.DEBUG, } = options; const template = fs.readFileSync(normalizePagePathFromBase(name), 'utf-8'); return { name: pluginName, enforce: 'pre', transform(code, id) { id = normalizePagePathFromBase(id); const regResult = pagesRE.exec(id); if (regResult && (regResult[2] === regResult[3] || regResult[3] === 'index')) { const oldTempleate = /