From ba0ec8fd1f8094d026f3b33604324f56442a92a9 Mon Sep 17 00:00:00 2001 From: sdegutis Date: Wed, 14 Aug 2024 13:12:58 -0500 Subject: [PATCH] Extract helper. --- src/compiler.ts | 50 ++++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 070f1ee..5d9a040 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -16,29 +16,7 @@ export class Compiler { sourceMaps: 'inline', module: { type: 'es6' }, plugin: (program) => { - if (browserFilePath) { - for (const imp of program.body) { - if (imp.type === 'ImportDeclaration') { - const dep = imp.source.value; - const version = ( - this.packageJson.devDependencies[dep] ?? - this.packageJson.dependencies[dep] - ); - if (version) { - delete imp.source.raw; - imp.source.value = `https://cdn.jsdelivr.net/npm/${dep}@${version}/+esm`; - } - else { - const typeDep = '@types/' + dep.replace(/^@(.+?)\/(.+)/, '$1__$2'); - if (this.packageJson.devDependencies[typeDep]) { - delete imp.source.raw; - imp.source.value = `https://cdn.jsdelivr.net/npm/${dep}/+esm`; - } - } - } - } - } - return program; + return this.#renameImports(program, browserFilePath); }, jsc: { parser: { @@ -72,4 +50,30 @@ export class Compiler { return result; } + #renameImports(program: swc.Program, browserFilePath?: string): swc.Program { + if (browserFilePath) { + for (const imp of program.body) { + if (imp.type === 'ImportDeclaration') { + const dep = imp.source.value; + const version = ( + this.packageJson.devDependencies[dep] ?? + this.packageJson.dependencies[dep] + ); + if (version) { + delete imp.source.raw; + imp.source.value = `https://cdn.jsdelivr.net/npm/${dep}@${version}/+esm`; + } + else { + const typeDep = '@types/' + dep.replace(/^@(.+?)\/(.+)/, '$1__$2'); + if (this.packageJson.devDependencies[typeDep]) { + delete imp.source.raw; + imp.source.value = `https://cdn.jsdelivr.net/npm/${dep}/+esm`; + } + } + } + } + } + return program; + } + }