Skip to content

Commit 12f006d

Browse files
committed
feat: add Vite and Vitest configuration files for build and testing setup
1 parent bfcc1c7 commit 12f006d

2 files changed

Lines changed: 63 additions & 0 deletions

File tree

‎vite.config.ts‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
import { defineConfig } from "vite";
2+
import { resolve } from "pathe";
3+
import { readFileSync, writeFileSync } from "fs";
4+
import pkg from "./package.json";
5+
6+
const external = [
7+
/^node:/,
8+
...Object.keys(pkg.dependencies ?? {}),
9+
...Object.keys(pkg.peerDependencies ?? {}),
10+
];
11+
12+
function preserveCliShebang(): import("vite").Plugin {
13+
return {
14+
name: "preserve-cli-shebang",
15+
closeBundle() {
16+
const cliPath = resolve(__dirname, "dist/cli.js");
17+
const content = readFileSync(cliPath, "utf8");
18+
if (!content.startsWith("#!/usr/bin/env node")) {
19+
writeFileSync(cliPath, `#!/usr/bin/env node\n${content}`);
20+
}
21+
},
22+
};
23+
}
24+
25+
export default defineConfig({
26+
plugins: [preserveCliShebang()],
27+
build: {
28+
ssr: true,
29+
outDir: "dist",
30+
emptyOutDir: true,
31+
target: "node18",
32+
sourcemap: true,
33+
rollupOptions: {
34+
input: {
35+
cli: resolve(__dirname, "src/cli.ts"),
36+
index: resolve(__dirname, "src/index.ts"),
37+
},
38+
external,
39+
output: {
40+
format: "cjs",
41+
entryFileNames: "[name].js",
42+
exports: "auto",
43+
},
44+
},
45+
},
46+
});

‎vitest.config.ts‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { defineConfig } from "vitest/config";
2+
import { resolve } from "pathe";
3+
4+
export default defineConfig({
5+
test: {
6+
environment: "node",
7+
include: ["tests/**/*.test.ts"],
8+
setupFiles: ["tests/helpers/setup.ts"],
9+
testTimeout: 30000,
10+
restoreMocks: true,
11+
},
12+
resolve: {
13+
alias: {
14+
"@": resolve(__dirname, "src"),
15+
},
16+
},
17+
});

0 commit comments

Comments
 (0)