perf: improve cjs shim
This commit is contained in:
parent
d9aaf24f84
commit
19b42225f8
|
@ -41,6 +41,11 @@ export function supportESM(): boolean {
|
||||||
return parseInt(majorVer) >= 28
|
return parseInt(majorVer) >= 28
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getElectronMajorVersion(): number {
|
||||||
|
const majorVer = getElectronMajorVer()
|
||||||
|
return parseInt(majorVer)
|
||||||
|
}
|
||||||
|
|
||||||
export function getElectronPath(): string {
|
export function getElectronPath(): string {
|
||||||
let electronExecPath = process.env.ELECTRON_EXEC_PATH || ''
|
let electronExecPath = process.env.ELECTRON_EXEC_PATH || ''
|
||||||
if (!electronExecPath) {
|
if (!electronExecPath) {
|
||||||
|
|
|
@ -8,9 +8,11 @@ import MagicString from 'magic-string'
|
||||||
import type { SourceMapInput } from 'rollup'
|
import type { SourceMapInput } from 'rollup'
|
||||||
import type { Plugin } from 'vite'
|
import type { Plugin } from 'vite'
|
||||||
|
|
||||||
|
import { getElectronMajorVersion } from '../electron'
|
||||||
|
|
||||||
const CJSyntaxRe = /__filename|__dirname|require\(|require\.resolve\(/
|
const CJSyntaxRe = /__filename|__dirname|require\(|require\.resolve\(/
|
||||||
|
|
||||||
const CJSShim = `
|
const CJSShim_normal = `
|
||||||
// -- CommonJS Shims --
|
// -- CommonJS Shims --
|
||||||
import __cjs_url__ from 'node:url';
|
import __cjs_url__ from 'node:url';
|
||||||
import __cjs_path__ from 'node:path';
|
import __cjs_path__ from 'node:path';
|
||||||
|
@ -20,6 +22,14 @@ const __dirname = __cjs_path__.dirname(__filename);
|
||||||
const require = __cjs_mod__.createRequire(import.meta.url);
|
const require = __cjs_mod__.createRequire(import.meta.url);
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const CJSShim_node_20_11 = `
|
||||||
|
// -- CommonJS Shims --
|
||||||
|
import __cjs_mod__ from 'node:module';
|
||||||
|
const __filename = import.meta.filename;
|
||||||
|
const __dirname = import.meta.dirname;
|
||||||
|
const require = __cjs_mod__.createRequire(import.meta.url);
|
||||||
|
`
|
||||||
|
|
||||||
const ESMStaticImportRe =
|
const ESMStaticImportRe =
|
||||||
/(?<=\s|^|;)import\s*([\s"']*(?<imports>[\p{L}\p{M}\w\t\n\r $*,/{}@.]+)from\s*)?["']\s*(?<specifier>(?<="\s*)[^"]*[^\s"](?=\s*")|(?<='\s*)[^']*[^\s'](?=\s*'))\s*["'][\s;]*/gmu
|
/(?<=\s|^|;)import\s*([\s"']*(?<imports>[\p{L}\p{M}\w\t\n\r $*,/{}@.]+)from\s*)?["']\s*(?<specifier>(?<="\s*)[^"]*[^\s"](?=\s*")|(?<='\s*)[^']*[^\s'](?=\s*'))\s*["'][\s;]*/gmu
|
||||||
|
|
||||||
|
@ -37,6 +47,9 @@ function findStaticImports(code: string): StaticImport[] {
|
||||||
|
|
||||||
export default function esmShimPlugin(): Plugin {
|
export default function esmShimPlugin(): Plugin {
|
||||||
let sourcemap: boolean | 'inline' | 'hidden' = false
|
let sourcemap: boolean | 'inline' | 'hidden' = false
|
||||||
|
|
||||||
|
const CJSShim = getElectronMajorVersion() >= 30 ? CJSShim_node_20_11 : CJSShim_normal
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name: 'vite:esm-shim',
|
name: 'vite:esm-shim',
|
||||||
apply: 'build',
|
apply: 'build',
|
||||||
|
|
Loading…
Reference in a new issue