Skip to content

Commit

Permalink
bun pm pack support "files" starting with ./ (#17135)
Browse files Browse the repository at this point in the history
Co-authored-by: Dylan Conway <[email protected]>
  • Loading branch information
RiskyMH and dylan-conway authored Feb 8, 2025
1 parent f912e0a commit 584db03
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 5 deletions.
4 changes: 3 additions & 1 deletion src/cli/pack_command.zig
Original file line number Diff line number Diff line change
Expand Up @@ -1356,10 +1356,12 @@ pub const PackCommand = struct {
var includes: std.ArrayListUnmanaged(Pattern) = .{};
defer includes.deinit(ctx.allocator);

var path_buf: PathBuffer = undefined;
var files_array = _files_array;
while (files_array.next()) |files_entry| {
if (files_entry.asString(ctx.allocator)) |file_entry_str| {
const parsed = try Pattern.fromUTF8(ctx.allocator, file_entry_str) orelse continue;
const normalized = bun.path.normalizeBuf(file_entry_str, &path_buf, .posix);
const parsed = try Pattern.fromUTF8(ctx.allocator, normalized) orelse continue;
try includes.append(ctx.allocator, parsed);
continue;
}
Expand Down
33 changes: 29 additions & 4 deletions test/cli/install/bun-pack.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -921,7 +921,7 @@ describe("files", () => {
write(
join(packageDir, "package.json"),
JSON.stringify({
name: "pack-files-3",
name: "pack-files-2",
version: "1.2.3",
files: ["index.js"],
}),
Expand All @@ -932,16 +932,41 @@ describe("files", () => {
]);

await pack(packageDir, bunEnv);
const tarball = readTarball(join(packageDir, "pack-files-3-1.2.3.tgz"));
const tarball = readTarball(join(packageDir, "pack-files-2-1.2.3.tgz"));
expect(tarball.entries).toMatchObject([{ "pathname": "package/package.json" }, { "pathname": "package/index.js" }]);
});

test("matches './' as the root", async () => {
await Promise.all([
write(
join(packageDir, "package.json"),
JSON.stringify({
name: "pack-files-3",
version: "1.2.3",
files: ["./dist", "!./subdir", "!./dist/index.js", "./////src//index.ts"],
}),
),
write(join(packageDir, "dist", "index.js"), "console.log('hello ./dist/index.js')"),
write(join(packageDir, "subdir", "index.js"), "console.log('hello ./subdir/index.js')"),
write(join(packageDir, "src", "dist", "index.js"), "console.log('hello ./src/dist/index.js')"),
write(join(packageDir, "src", "index.ts"), "console.log('hello ./src/index.ts')"),
]);

await pack(packageDir, bunEnv);
const tarball = readTarball(join(packageDir, "pack-files-3-1.2.3.tgz"));
expect(tarball.entries).toMatchObject([
{ "pathname": "package/package.json" },
{ "pathname": "package/dist/index.js" },
{ "pathname": "package/src/index.ts" },
]);
});

test("recursive only if leading **/", async () => {
await Promise.all([
write(
join(packageDir, "package.json"),
JSON.stringify({
name: "pack-files-2",
name: "pack-files-4",
version: "1.2.123",
files: ["**/index.js"],
}),
Expand All @@ -953,7 +978,7 @@ describe("files", () => {
]);

await pack(packageDir, bunEnv);
const tarball = readTarball(join(packageDir, "pack-files-2-1.2.123.tgz"));
const tarball = readTarball(join(packageDir, "pack-files-4-1.2.123.tgz"));
expect(tarball.entries).toMatchObject([
{ "pathname": "package/package.json" },
{ "pathname": "package/index.js" },
Expand Down

0 comments on commit 584db03

Please sign in to comment.