diff --git a/cli/tools/pack/mod.rs b/cli/tools/pack/mod.rs index 938073c74659b0..2a90ca39e93be0 100644 --- a/cli/tools/pack/mod.rs +++ b/cli/tools/pack/mod.rs @@ -474,10 +474,12 @@ fn collect_asset_files( excluded.insert(p); } } - // The source config file is replaced by the generated package.json. + // The source config file and any existing package.json are replaced by the + // generated package.json. if let Ok(p) = package.config_file.specifier.to_file_path() { excluded.insert(p); } + excluded.insert(package_dir.join("package.json")); // README/LICENSE are added by `collect_readme_license_files`. for file in readme_license_files { excluded.insert(package_dir.join(&file.relative_path)); diff --git a/tests/specs/pack/package_json_content/__test__.jsonc b/tests/specs/pack/package_json_content/__test__.jsonc index de627195e59170..7a09b28dca94cc 100644 --- a/tests/specs/pack/package_json_content/__test__.jsonc +++ b/tests/specs/pack/package_json_content/__test__.jsonc @@ -4,13 +4,13 @@ "pack_package_json_content": { "steps": [{ "args": "pack", - "output": "[WILDCARD]✓[WILDCARD]test-pkg-json-1.0.0.tgz[WILDCARD]" + "output": "[WILDCARD]0 assets collected[WILDCARD]✓[WILDCARD]test-pkg-json-1.0.0.tgz[WILDCARD]" }, { "if": "unix", "commandName": "bash", "args": [ "-c", - "tar -xzf test-pkg-json-1.0.0.tgz && cat package/package.json && echo" + "test \"$(tar -tzf test-pkg-json-1.0.0.tgz | grep -c '^package/package.json$')\" -eq 1 && tar -xzf test-pkg-json-1.0.0.tgz && cat package/package.json && echo" ], "output": "package_json.out" }] diff --git a/tests/specs/pack/package_json_content/package.json b/tests/specs/pack/package_json_content/package.json new file mode 100644 index 00000000000000..1d334856d29761 --- /dev/null +++ b/tests/specs/pack/package_json_content/package.json @@ -0,0 +1,4 @@ +{ + "name": "source-package-json", + "private": true +}