Skip to content

Commit fd24553

Browse files
authored
feat(pack): support .gitignore file (#41)
Signed-off-by: Kevin Cui <[email protected]>
1 parent 9e435c6 commit fd24553

File tree

6 files changed

+28
-1
lines changed

6 files changed

+28
-1
lines changed

src/cmd/pack.test.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import path from "node:path";
2+
import * as tar from "tar";
23
import { afterEach, describe, expect, it } from "vitest";
34
import { fixture } from "../../tests/helper/fs";
45
import { exists, remove } from "../utils/fs";
@@ -44,6 +45,17 @@ describe("pack", () => {
4445
await remove(tgz);
4546
await pack(p, p);
4647
await expect(exists(tgz)).resolves.toBe(true);
48+
49+
{
50+
const result: string[] = [];
51+
await tar.t({
52+
f: tgz,
53+
onReadEntry: (entry) => {
54+
result.push(entry.path.replaceAll("\\", "/"));
55+
},
56+
});
57+
expect(result).toContainEqual("package/package/.gitignore");
58+
}
4759
await remove(tgz);
4860
});
4961
});

src/cmd/pack.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ export async function prePack(p: string, ignore: string[]) {
1818

1919
await Promise.all([
2020
copyDir(p, path.join(workdir, "package"), (source, _) => {
21-
const relative = path.relative(p, source);
21+
const relative = path.relative(p, source).split(path.sep);
2222
return !ignore.some(i => relative.includes(i));
2323
}),
2424
writeFile(path.join(workdir, "package.json"), packageJson),

src/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ export interface OOPackageSchema {
3636
dependencies?: Record<string, string>;
3737
scripts: Record<string, string>;
3838
icon?: string;
39+
files?: string[];
3940
}

src/utils/npm.test.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ describe.concurrent("generatePackageJson", () => {
5252
...content,
5353
scripts: {},
5454
icon: `./${path.join("package", "icon.png")}`,
55+
files: [
56+
"package",
57+
"package/.gitignore",
58+
],
5559
});
5660
});
5761

@@ -69,6 +73,10 @@ describe.concurrent("generatePackageJson", () => {
6973
expect(result).toEqual({
7074
...content,
7175
scripts: {},
76+
files: [
77+
"package",
78+
"package/.gitignore",
79+
],
7280
});
7381
});
7482
});

src/utils/npm.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,11 @@ export async function generatePackageJson(dir: string, stringify = true): Promis
4545

4646
content.scripts = {};
4747

48+
content.files = [
49+
"package",
50+
"package/.gitignore",
51+
];
52+
4853
if (stringify) {
4954
return JSON.stringify(content, null, 2);
5055
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
aaa

0 commit comments

Comments
 (0)