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
     }
   }