feat: resolve import.meta.[dirname|filename] to support CommonJS format

This commit is contained in:
alex8088 2024-06-15 21:49:51 +08:00
parent d79de5abb6
commit b3185d7fc5
2 changed files with 11 additions and 5 deletions

View file

@ -18,7 +18,7 @@ import { build } from 'esbuild'
import { electronMainVitePlugin, electronPreloadVitePlugin, electronRendererVitePlugin } from './plugins/electron' import { electronMainVitePlugin, electronPreloadVitePlugin, electronRendererVitePlugin } from './plugins/electron'
import assetPlugin from './plugins/asset' import assetPlugin from './plugins/asset'
import workerPlugin from './plugins/worker' import workerPlugin from './plugins/worker'
import importMetaUrlPlugin from './plugins/importMetaUrl' import importMetaPlugin from './plugins/importMeta'
import esmShimPlugin from './plugins/esm' import esmShimPlugin from './plugins/esm'
import modulePathPlugin from './plugins/modulePath' import modulePathPlugin from './plugins/modulePath'
import { isObject, isFilePathESM } from './utils' import { isObject, isFilePathESM } from './utils'
@ -151,7 +151,7 @@ export async function resolveConfig(
assetPlugin(), assetPlugin(),
workerPlugin(), workerPlugin(),
modulePathPlugin(), modulePathPlugin(),
importMetaUrlPlugin(), importMetaPlugin(),
esmShimPlugin() esmShimPlugin()
]) ])
@ -168,7 +168,7 @@ export async function resolveConfig(
mergePlugins(preloadViteConfig, [ mergePlugins(preloadViteConfig, [
...electronPreloadVitePlugin({ root }), ...electronPreloadVitePlugin({ root }),
assetPlugin(), assetPlugin(),
importMetaUrlPlugin(), importMetaPlugin(),
esmShimPlugin() esmShimPlugin()
]) ])

View file

@ -1,14 +1,20 @@
import type { Plugin } from 'vite' import type { Plugin } from 'vite'
export default function importMetaUrlPlugin(): Plugin { export default function importMetaPlugin(): Plugin {
return { return {
name: 'vite:import-meta-url', name: 'vite:import-meta',
apply: 'build', apply: 'build',
enforce: 'pre', enforce: 'pre',
resolveImportMeta(property, { format }): string | null { resolveImportMeta(property, { format }): string | null {
if (property === 'url' && format === 'cjs') { if (property === 'url' && format === 'cjs') {
return `require("url").pathToFileURL(__filename).href` return `require("url").pathToFileURL(__filename).href`
} }
if (property === 'filename' && format === 'cjs') {
return `__filename`
}
if (property === 'dirname' && format === 'cjs') {
return `__dirname`
}
return null return null
} }
} }