From a0dd60070fc85a8196638359556540b43307db2b Mon Sep 17 00:00:00 2001 From: maltoze Date: Thu, 8 Jun 2023 15:56:23 +0800 Subject: [PATCH 1/4] feat: do not build public files --- src/devBuilder/devBuilder.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/devBuilder/devBuilder.ts b/src/devBuilder/devBuilder.ts index f82592b..24f2255 100644 --- a/src/devBuilder/devBuilder.ts +++ b/src/devBuilder/devBuilder.ts @@ -58,12 +58,6 @@ export default abstract class DevBuilder< this.hmrViteClientUrl = `${this.hmrServerOrigin}/@vite/client`; await emptyDir(this.outDir); - const publicDir = path.resolve( - process.cwd(), - this.viteConfig.root, - this.viteConfig.publicDir - ); - await copy(publicDir, this.outDir); await this.writeManifestHtmlFiles(manifestHtmlFiles); await this.writeManifestContentScriptFiles(); @@ -72,6 +66,13 @@ export default abstract class DevBuilder< await this.writeBuildFiles(manifestHtmlFiles); + const publicDir = path.resolve( + process.cwd(), + this.viteConfig.root, + this.viteConfig.publicDir + ); + await copy(publicDir, this.outDir); + this.updateContentSecurityPolicyForHmr(); await writeFile( From 61e4dd56d9af35736531108365921584c70d9757 Mon Sep 17 00:00:00 2001 From: maltoze Date: Tue, 4 Jul 2023 10:38:21 +0800 Subject: [PATCH 2/4] feat: do not write public script files --- src/devBuilder/devBuilder.ts | 33 +++++++++++++++++++++------------ 1 file changed, 21 insertions(+), 12 deletions(-) diff --git a/src/devBuilder/devBuilder.ts b/src/devBuilder/devBuilder.ts index 24f2255..b795c5e 100644 --- a/src/devBuilder/devBuilder.ts +++ b/src/devBuilder/devBuilder.ts @@ -17,6 +17,7 @@ export default abstract class DevBuilder< protected inlineScriptHashes = new Set(); protected outDir: string; protected hmrViteClientUrl = ""; + protected publicDir: string; constructor( protected viteConfig: ResolvedConfig, @@ -29,6 +30,11 @@ export default abstract class DevBuilder< this.viteConfig.root, this.viteConfig.build.outDir ); + this.publicDir = path.resolve( + process.cwd(), + this.viteConfig.root, + this.viteConfig.publicDir + ); } protected abstract updateContentSecurityPolicyForHmr(): void; @@ -58,6 +64,7 @@ export default abstract class DevBuilder< this.hmrViteClientUrl = `${this.hmrServerOrigin}/@vite/client`; await emptyDir(this.outDir); + await copy(this.publicDir, this.outDir); await this.writeManifestHtmlFiles(manifestHtmlFiles); await this.writeManifestContentScriptFiles(); @@ -66,13 +73,6 @@ export default abstract class DevBuilder< await this.writeBuildFiles(manifestHtmlFiles); - const publicDir = path.resolve( - process.cwd(), - this.viteConfig.root, - this.viteConfig.publicDir - ); - await copy(publicDir, this.outDir); - this.updateContentSecurityPolicyForHmr(); await writeFile( @@ -171,13 +171,22 @@ export default abstract class DevBuilder< for (const [scriptJsIndex, fileName] of script.js.entries()) { const loaderFileName = await this.writeManifestScriptFile(fileName); - this.manifest.content_scripts[contentScriptIndex].js![scriptJsIndex] = - loaderFileName; + if (loaderFileName) { + this.manifest.content_scripts[contentScriptIndex].js![scriptJsIndex] = + loaderFileName; + } } } } - protected async writeManifestScriptFile(fileName: string): Promise { + protected async writeManifestScriptFile( + fileName: string + ): Promise { + const publicDirName = path.basename(this.publicDir); + if (path.dirname(fileName) === publicDirName) { + return null; + } + const outputFileName = getOutputFileName(fileName); const scriptLoaderFile = getScriptLoaderFile(outputFileName, [ @@ -266,7 +275,7 @@ export default abstract class DevBuilder< const absoluteFileName = getInputFileName(fileName, this.viteConfig.root); - let outputFileName = ""; + let outputFileName: string | null = ""; switch (type) { case "html": @@ -293,7 +302,7 @@ export default abstract class DevBuilder< const webAccessibleResource = getAdditionalInputAsWebAccessibleResource(additionalInput); - if (webAccessibleResource) { + if (webAccessibleResource && outputFileName) { this.addWebAccessibleResource({ fileName: outputFileName, webAccessibleResource, From d32aaa86b86e429ee1d2a7bed3d797be27ae13e2 Mon Sep 17 00:00:00 2001 From: maltoze Date: Tue, 4 Jul 2023 10:52:11 +0800 Subject: [PATCH 3/4] fix: copy public files --- src/devBuilder/devBuilder.ts | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/devBuilder/devBuilder.ts b/src/devBuilder/devBuilder.ts index b795c5e..22e4ad0 100644 --- a/src/devBuilder/devBuilder.ts +++ b/src/devBuilder/devBuilder.ts @@ -171,20 +171,20 @@ export default abstract class DevBuilder< for (const [scriptJsIndex, fileName] of script.js.entries()) { const loaderFileName = await this.writeManifestScriptFile(fileName); - if (loaderFileName) { - this.manifest.content_scripts[contentScriptIndex].js![scriptJsIndex] = - loaderFileName; - } + this.manifest.content_scripts[contentScriptIndex].js![scriptJsIndex] = + loaderFileName; } } } - protected async writeManifestScriptFile( - fileName: string - ): Promise { + protected async writeManifestScriptFile(fileName: string): Promise { const publicDirName = path.basename(this.publicDir); if (path.dirname(fileName) === publicDirName) { - return null; + await copy( + `${this.publicDir}/${path.basename(fileName)}`, + `${this.outDir}/${fileName}` + ); + return fileName; } const outputFileName = getOutputFileName(fileName); @@ -275,7 +275,7 @@ export default abstract class DevBuilder< const absoluteFileName = getInputFileName(fileName, this.viteConfig.root); - let outputFileName: string | null = ""; + let outputFileName = ""; switch (type) { case "html": @@ -302,7 +302,7 @@ export default abstract class DevBuilder< const webAccessibleResource = getAdditionalInputAsWebAccessibleResource(additionalInput); - if (webAccessibleResource && outputFileName) { + if (webAccessibleResource) { this.addWebAccessibleResource({ fileName: outputFileName, webAccessibleResource, From 5f10ef57ca6962fdf6746c9b1cd39b70e179c90f Mon Sep 17 00:00:00 2001 From: maltoze Date: Tue, 4 Jul 2023 11:49:46 +0800 Subject: [PATCH 4/4] fix: correct nested file name --- src/devBuilder/devBuilder.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/devBuilder/devBuilder.ts b/src/devBuilder/devBuilder.ts index 22e4ad0..19706c0 100644 --- a/src/devBuilder/devBuilder.ts +++ b/src/devBuilder/devBuilder.ts @@ -179,11 +179,8 @@ export default abstract class DevBuilder< protected async writeManifestScriptFile(fileName: string): Promise { const publicDirName = path.basename(this.publicDir); - if (path.dirname(fileName) === publicDirName) { - await copy( - `${this.publicDir}/${path.basename(fileName)}`, - `${this.outDir}/${fileName}` - ); + if (fileName.split(path.sep)[0] === publicDirName) { + await copy(fileName, `${this.outDir}/${fileName}`); return fileName; }