From b3185d7fc59a75f2884e896a2acb8b1260069511 Mon Sep 17 00:00:00 2001 From: alex8088 <244096523@qq.com> Date: Sat, 15 Jun 2024 21:49:51 +0800 Subject: [PATCH] feat: resolve import.meta.[dirname|filename] to support CommonJS format --- src/config.ts | 6 +++--- src/plugins/{importMetaUrl.ts => importMeta.ts} | 10 ++++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) rename src/plugins/{importMetaUrl.ts => importMeta.ts} (52%) diff --git a/src/config.ts b/src/config.ts index 0e5c376..c636fe8 100644 --- a/src/config.ts +++ b/src/config.ts @@ -18,7 +18,7 @@ import { build } from 'esbuild' import { electronMainVitePlugin, electronPreloadVitePlugin, electronRendererVitePlugin } from './plugins/electron' import assetPlugin from './plugins/asset' import workerPlugin from './plugins/worker' -import importMetaUrlPlugin from './plugins/importMetaUrl' +import importMetaPlugin from './plugins/importMeta' import esmShimPlugin from './plugins/esm' import modulePathPlugin from './plugins/modulePath' import { isObject, isFilePathESM } from './utils' @@ -151,7 +151,7 @@ export async function resolveConfig( assetPlugin(), workerPlugin(), modulePathPlugin(), - importMetaUrlPlugin(), + importMetaPlugin(), esmShimPlugin() ]) @@ -168,7 +168,7 @@ export async function resolveConfig( mergePlugins(preloadViteConfig, [ ...electronPreloadVitePlugin({ root }), assetPlugin(), - importMetaUrlPlugin(), + importMetaPlugin(), esmShimPlugin() ]) diff --git a/src/plugins/importMetaUrl.ts b/src/plugins/importMeta.ts similarity index 52% rename from src/plugins/importMetaUrl.ts rename to src/plugins/importMeta.ts index 223bdf5..395aca1 100644 --- a/src/plugins/importMetaUrl.ts +++ b/src/plugins/importMeta.ts @@ -1,14 +1,20 @@ import type { Plugin } from 'vite' -export default function importMetaUrlPlugin(): Plugin { +export default function importMetaPlugin(): Plugin { return { - name: 'vite:import-meta-url', + name: 'vite:import-meta', apply: 'build', enforce: 'pre', resolveImportMeta(property, { format }): string | null { if (property === 'url' && format === 'cjs') { return `require("url").pathToFileURL(__filename).href` } + if (property === 'filename' && format === 'cjs') { + return `__filename` + } + if (property === 'dirname' && format === 'cjs') { + return `__dirname` + } return null } }