diff --git a/packages/wxt/e2e/tests/zip.test.ts b/packages/wxt/e2e/tests/zip.test.ts index 3ff265aad..b95986351 100644 --- a/packages/wxt/e2e/tests/zip.test.ts +++ b/packages/wxt/e2e/tests/zip.test.ts @@ -77,21 +77,23 @@ describe('Zipping', () => { it('should correctly apply template variables for zip file names based on provided config', async () => { const project = new TestProject({ name: 'test', - version: '1.0.0', + version: '1.0.0-beta.1', }); project.addFile( 'entrypoints/background.ts', 'export default defineBackground(() => {});', ); - const artifactZip = '.output/test-1.0.0-firefox-development.zip'; - const sourcesZip = '.output/test-1.0.0-development-sources.zip'; + const artifactZip = '.output/test-1.0.0-beta.1-firefox-dev.zip'; + const sourcesZip = '.output/test-1.0.0-beta.1-sources-dev.zip'; await project.zip({ browser: 'firefox', mode: 'development', zip: { - artifactTemplate: '{{name}}-{{version}}-{{browser}}-{{mode}}.zip', - sourcesTemplate: '{{name}}-{{version}}-{{mode}}-sources.zip', + artifactTemplate: + '{{name}}-{{packageVersion}}-{{browser}}{{modeSuffix}}.zip', + sourcesTemplate: + '{{name}}-{{packageVersion}}-sources{{modeSuffix}}.zip', }, }); diff --git a/packages/wxt/src/core/resolve-config.ts b/packages/wxt/src/core/resolve-config.ts index 001884f90..803b226e2 100644 --- a/packages/wxt/src/core/resolve-config.ts +++ b/packages/wxt/src/core/resolve-config.ts @@ -301,8 +301,9 @@ function resolveZipConfig( const downloadedPackagesDir = path.resolve(root, '.wxt/local_modules'); return { name: undefined, - sourcesTemplate: '{{name}}-{{version}}-sources.zip', - artifactTemplate: '{{name}}-{{version}}-{{browser}}.zip', + sourcesTemplate: '{{name}}-{{packageVersion}}-sources{{modeSuffix}}.zip', + artifactTemplate: + '{{name}}-{{packageVersion}}-{{browser}}{{modeSuffix}}.zip', sourcesRoot: root, includeSources: [], compressionLevel: 9, diff --git a/packages/wxt/src/core/zip.ts b/packages/wxt/src/core/zip.ts index ceda07efd..56346e70b 100644 --- a/packages/wxt/src/core/zip.ts +++ b/packages/wxt/src/core/zip.ts @@ -30,6 +30,11 @@ export async function zip(config?: InlineConfig): Promise { const projectName = wxt.config.zip.name ?? safeFilename(packageJson?.name || path.basename(process.cwd())); + const modeSuffixes: Record = { + production: '', + development: '-dev', + }; + const modeSuffix = modeSuffixes[wxt.config.mode] ?? `-${wxt.config.mode}`; const applyTemplate = (template: string): string => template .replaceAll('{{name}}', projectName) @@ -39,6 +44,7 @@ export async function zip(config?: InlineConfig): Promise { output.manifest.version_name ?? output.manifest.version, ) .replaceAll('{{packageVersion}}', packageJson?.version) + .replaceAll('{{modeSuffix}}', modeSuffix) .replaceAll('{{mode}}', wxt.config.mode) .replaceAll('{{manifestVersion}}', `mv${wxt.config.manifestVersion}`); diff --git a/packages/wxt/src/types.ts b/packages/wxt/src/types.ts index b1ef253bd..02d41cb45 100644 --- a/packages/wxt/src/types.ts +++ b/packages/wxt/src/types.ts @@ -150,9 +150,10 @@ export interface InlineConfig { * - `{{packageVersion}}` - The version from the package.json * - `{{browser}}` - The target browser from the `--browser` CLI flag * - `{{mode}}` - The current mode + * - `{{modeSuffix}}`: A suffix based on the mode ('-dev' for development, '' for production) * - `{{manifestVersion}}` - Either "2" or "3" * - * @default "{{name}}-{{version}}-{{browser}}.zip" + * @default "{{name}}-{{packageVersion}}-{{browser}}{{modeSuffix}}.zip" */ artifactTemplate?: string; /** @@ -175,9 +176,10 @@ export interface InlineConfig { * - `{{packageVersion}}` - The version from the package.json * - `{{browser}}` - The target browser from the `--browser` CLI flag * - `{{mode}}` - The current mode + * - `{{modeSuffix}}`: A suffix based on the mode ('-dev' for development, '' for production) * - `{{manifestVersion}}` - Either "2" or "3" * - * @default "{{name}}-{{version}}-sources.zip" + * @default "{{name}}-{{packageVersion}}-sources{{modeSuffix}}.zip" */ sourcesTemplate?: string; /**