Skip to content

Commit dbd3086

Browse files
committed
fix(create): allow better-sqlite3 builds in pnpm templates
Set pnpm.onlyBuiltDependencies for React Drizzle and Prisma SQLite templates so better-sqlite3 native bindings build correctly in generated apps. Fixes #321
1 parent 4f7c925 commit dbd3086

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

.changeset/few-crabs-wink.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@tanstack/create': patch
3+
---
4+
5+
Allow `better-sqlite3` build scripts in generated pnpm projects when using the React Drizzle or Prisma SQLite add-ons, preventing runtime native binding errors.

packages/create/src/frameworks/react/add-ons/drizzle/package.json.ejs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,5 +18,9 @@
1818
"db:push": "drizzle-kit push",
1919
"db:pull": "drizzle-kit pull",
2020
"db:studio": "drizzle-kit studio"
21+
}<% if (addOnOption.drizzle.database === 'sqlite') { %>,
22+
"pnpm": {
23+
"onlyBuiltDependencies": ["better-sqlite3"]
2124
}
25+
<% } %>
2226
}

packages/create/src/frameworks/react/add-ons/prisma/package.json.ejs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,9 @@
1717
"db:migrate": "dotenv -e .env.local -- prisma migrate dev",
1818
"db:studio": "dotenv -e .env.local -- prisma studio",
1919
"db:seed": "dotenv -e .env.local -- prisma db seed"
20+
}<% if (addOnOption.prisma.database === 'sqlite') { %>,
21+
"pnpm": {
22+
"onlyBuiltDependencies": ["better-sqlite3"]
2023
}
24+
<% } %>
2125
}

packages/create/tests/package-json.test.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,4 +59,36 @@ describe('createPackageJSON', () => {
5959
// Use JSON.stringify to test sorting order of dependencies
6060
expect(JSON.stringify(packageJSON)).toEqual(JSON.stringify(expected))
6161
})
62+
63+
it('should include sqlite build approval for pnpm templates', () => {
64+
const packageJSON = createPackageJSON({
65+
chosenAddOns: [
66+
{
67+
packageTemplate:
68+
'{"pnpm": {<% if (addOnOption.prisma.database === "sqlite") { %>"onlyBuiltDependencies": ["better-sqlite3"]<% } %>}}',
69+
},
70+
],
71+
addOnOptions: {
72+
prisma: {
73+
database: 'sqlite',
74+
},
75+
},
76+
mode: 'file-router',
77+
typescript: true,
78+
tailwind: true,
79+
projectName: 'test',
80+
framework: {
81+
basePackageJSON: {},
82+
optionalPackages: {
83+
typescript: {},
84+
tailwindcss: {},
85+
'file-router': {},
86+
},
87+
} as unknown as Framework,
88+
} as unknown as Options)
89+
90+
expect(packageJSON.pnpm).toEqual({
91+
onlyBuiltDependencies: ['better-sqlite3'],
92+
})
93+
})
6294
})

0 commit comments

Comments
 (0)