From aa681dd7385d141cc9ee3e11ef743570b2bee1f3 Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Fri, 27 Feb 2026 17:19:34 +0800 Subject: [PATCH 01/10] normalize pnpm execute instructions --- documentation/docs/10-introduction/10-overview.md | 2 +- documentation/docs/10-introduction/20-faq.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/docs/10-introduction/10-overview.md b/documentation/docs/10-introduction/10-overview.md index 564bcf969..67a4316db 100644 --- a/documentation/docs/10-introduction/10-overview.md +++ b/documentation/docs/10-introduction/10-overview.md @@ -6,7 +6,7 @@ The command line interface (CLI), `sv`, is a toolkit for creating and maintainin ## Usage -The easiest way to run `sv` is with [`npx`](https://docs.npmjs.com/cli/v8/commands/npx) (or the equivalent command if you're using a different package manager — for example, `pnpx` if you're using [pnpm](https://pnpm.io/)): +The easiest way to run `sv` is with [`npx`](https://docs.npmjs.com/cli/v8/commands/npx) (or the equivalent command if you're using a different package manager — for example, `pnpm dlx` if you're using [pnpm](https://pnpm.io/)): ```sh npx sv diff --git a/documentation/docs/10-introduction/20-faq.md b/documentation/docs/10-introduction/20-faq.md index e3aaa7f78..275d23488 100644 --- a/documentation/docs/10-introduction/20-faq.md +++ b/documentation/docs/10-introduction/20-faq.md @@ -7,7 +7,7 @@ title: Frequently asked questions Running `sv` looks slightly different for each package manager. Here is a list of the most common commands: - **npm** : `npx sv create` -- **pnpm** : `pnpx sv create` or `pnpm dlx sv create` +- **pnpm** : `pnpm dlx sv create` - **Bun** : `bunx sv create` - **Deno** : `deno run npm:sv create` - **Yarn** : `yarn dlx sv create` From 944a0066ee07e5ec58dfc89b425af94b576fc3d2 Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Fri, 27 Feb 2026 17:46:25 +0800 Subject: [PATCH 02/10] adapt the package manager in the script --- packages/sv/src/addons/better-auth.ts | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/packages/sv/src/addons/better-auth.ts b/packages/sv/src/addons/better-auth.ts index cd55b0277..0bd61e7a1 100644 --- a/packages/sv/src/addons/better-auth.ts +++ b/packages/sv/src/addons/better-auth.ts @@ -41,7 +41,7 @@ export default defineAddon({ runsAfter('tailwindcss'); }, - run: ({ sv, language, options, kit, dependencyVersion, files }) => { + run: ({ sv, language, options, kit, dependencyVersion, files, packageManager }) => { if (!kit) throw new Error('SvelteKit is required'); const demoPassword = options.demo.includes('password'); @@ -131,11 +131,18 @@ export default defineAddon({ sv.file(files.package, (content) => { const { data, generateCode } = parse.json(content); - json.packageScriptsUpsert( - data, - 'auth:schema', - `npx @better-auth/cli generate --config ${authConfigPath} --output ${authSchemaPath} --yes` - ); + + const cmd = resolveCommand(packageManager, 'execute', [ + '@better-auth/cli', + 'generate', + '--config', + authConfigPath, + '--output', + authSchemaPath, + '--yes' + ])!; + + json.packageScriptsUpsert(data, 'auth:schema', `${cmd.command} ${cmd.args.join(' ')}`); return generateCode(); }); From c0a718c6c524f60931f6ea564ed5986d9311ff0d Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Fri, 27 Feb 2026 17:54:54 +0800 Subject: [PATCH 03/10] update pnpm setup --- CONTRIBUTING.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 833531cd5..6a8dc931d 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,7 +18,8 @@ Please keep your pull requests focused to feature or issue. Focused smaller chan This is a monorepo, meaning the repo holds multiple packages. It requires the use of [pnpm](https://pnpm.io/). You can [install pnpm](https://pnpm.io/installation) with: ```sh -npm i -g pnpm +npm i -g corepack@latest +corepack enable pnpm ``` _(Optional)_ For running certain packages and tests locally you will need to install [docker](https://docs.docker.com/get-started/get-docker). @@ -29,7 +30,7 @@ Linux users, you will have to ensure 'sudo' is not required. See [docker post in ```sh git clone https://github.com/sveltejs/cli.git cd cli -pnpm install +pnpm i ``` ## Build and run From 950f99f0a10b07532babffc912dddc1d7b939f24 Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Fri, 27 Feb 2026 19:15:37 +0800 Subject: [PATCH 04/10] lock build args to a specific version --- packages/sv/src/core/common.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sv/src/core/common.ts b/packages/sv/src/core/common.ts index aea103306..036557986 100644 --- a/packages/sv/src/core/common.ts +++ b/packages/sv/src/core/common.ts @@ -144,7 +144,7 @@ export function buildAndLogArgs( args: string[], lastArgs: string[] = [] ): string { - const allArgs = ['sv', command, ...args]; + const allArgs = [`sv@${pkg.version}`, command, ...args]; // Handle install option if (agent === null || agent === undefined) allArgs.push('--no-install'); From ef61abd6e94b4b643e18e00f269bd2044a7e6d72 Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Fri, 27 Feb 2026 19:19:03 +0800 Subject: [PATCH 05/10] what paolo said --- packages/sv/src/addons/better-auth.ts | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/packages/sv/src/addons/better-auth.ts b/packages/sv/src/addons/better-auth.ts index 0bd61e7a1..2943bac09 100644 --- a/packages/sv/src/addons/better-auth.ts +++ b/packages/sv/src/addons/better-auth.ts @@ -41,7 +41,7 @@ export default defineAddon({ runsAfter('tailwindcss'); }, - run: ({ sv, language, options, kit, dependencyVersion, files, packageManager }) => { + run: ({ sv, language, options, kit, dependencyVersion, files }) => { if (!kit) throw new Error('SvelteKit is required'); const demoPassword = options.demo.includes('password'); @@ -51,6 +51,7 @@ export default defineAddon({ let drizzleDialect: Dialect; sv.devDependency('better-auth', '^1.4.18'); + sv.devDependency('@better-auth/cli', '^1.4.18'); sv.file(`drizzle.config.${language}`, (content) => { const { ast, generateCode } = parse.script(content); @@ -131,18 +132,11 @@ export default defineAddon({ sv.file(files.package, (content) => { const { data, generateCode } = parse.json(content); - - const cmd = resolveCommand(packageManager, 'execute', [ - '@better-auth/cli', - 'generate', - '--config', - authConfigPath, - '--output', - authSchemaPath, - '--yes' - ])!; - - json.packageScriptsUpsert(data, 'auth:schema', `${cmd.command} ${cmd.args.join(' ')}`); + json.packageScriptsUpsert( + data, + 'auth:schema', + `better-auth/cli generate --config ${authConfigPath} --output ${authSchemaPath} --yes` + ); return generateCode(); }); From 758068236c3b08a9d0c0adcec7b9a6779de1e9f7 Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Fri, 27 Feb 2026 19:54:20 +0800 Subject: [PATCH 06/10] what he actually said --- packages/sv/src/addons/better-auth.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sv/src/addons/better-auth.ts b/packages/sv/src/addons/better-auth.ts index 2943bac09..1670c4d37 100644 --- a/packages/sv/src/addons/better-auth.ts +++ b/packages/sv/src/addons/better-auth.ts @@ -135,7 +135,7 @@ export default defineAddon({ json.packageScriptsUpsert( data, 'auth:schema', - `better-auth/cli generate --config ${authConfigPath} --output ${authSchemaPath} --yes` + `better-auth generate --config ${authConfigPath} --output ${authSchemaPath} --yes` ); return generateCode(); }); From ed7cb240040dc09427c3525cfb47c8ce2664de7e Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Fri, 27 Feb 2026 20:19:58 +0800 Subject: [PATCH 07/10] update snapshots --- packages/sv/src/cli/tests/cli.ts | 5 +++++ packages/sv/src/cli/tests/snapshots/create-only/README.md | 2 +- .../src/cli/tests/snapshots/create-with-all-addons/README.md | 2 +- .../cli/tests/snapshots/create-with-all-addons/package.json | 3 ++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/packages/sv/src/cli/tests/cli.ts b/packages/sv/src/cli/tests/cli.ts index 4b8564853..61fa5e05c 100644 --- a/packages/sv/src/cli/tests/cli.ts +++ b/packages/sv/src/cli/tests/cli.ts @@ -108,6 +108,11 @@ describe('cli', () => { generated = generated.replaceAll('\r\n', '\n'); // make it work on Windows too if (!generated.endsWith('\n')) generated += '\n'; // ensure trailing newline + // Normalize sv version in README.md to avoid snapshot drift + if (relativeFile === 'README.md') { + generated = generated.replace(/sv@\d+\.\d+\.\d+/g, 'sv@0.0.0'); + } + await expect(generated).toMatchFileSnapshot( path.resolve(snapPath, relativeFile), `file "${relativeFile}" does not match snapshot` diff --git a/packages/sv/src/cli/tests/snapshots/create-only/README.md b/packages/sv/src/cli/tests/snapshots/create-only/README.md index 2709fe8ef..7844bbfc6 100644 --- a/packages/sv/src/cli/tests/snapshots/create-only/README.md +++ b/packages/sv/src/cli/tests/snapshots/create-only/README.md @@ -15,7 +15,7 @@ To recreate this project with the same configuration: ```sh # recreate this project -npx sv create --template minimal --types ts --no-install packages/sv/.test-output/cli/create-only +npx sv@0.0.0 create --template minimal --types ts --no-install packages/sv/.test-output/cli/create-only ``` ## Developing diff --git a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/README.md b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/README.md index 639b5c0c7..c65e1b6f7 100644 --- a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/README.md +++ b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/README.md @@ -15,7 +15,7 @@ To recreate this project with the same configuration: ```sh # recreate this project -npx sv create --template minimal --types ts --add prettier eslint vitest="usages:unit,component" playwright tailwindcss="plugins:typography,forms" sveltekit-adapter="adapter:node" devtools-json drizzle="database:sqlite+sqlite:libsql" better-auth="demo:password,github" mdsvex paraglide="languageTags:en,es+demo:yes" mcp="ide:claude-code,cursor,gemini,opencode,vscode,other+setup:local" --no-install packages/sv/.test-output/cli/create-with-all-addons +npx sv@0.0.0 create --template minimal --types ts --add prettier eslint vitest="usages:unit,component" playwright tailwindcss="plugins:typography,forms" sveltekit-adapter="adapter:node" devtools-json drizzle="database:sqlite+sqlite:libsql" better-auth="demo:password,github" mdsvex paraglide="languageTags:en,es+demo:yes" mcp="ide:claude-code,cursor,gemini,opencode,vscode,other+setup:local" --no-install packages/sv/.test-output/cli/create-with-all-addons ``` ## Developing diff --git a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/package.json b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/package.json index 27d02f979..5cd80f37d 100644 --- a/packages/sv/src/cli/tests/snapshots/create-with-all-addons/package.json +++ b/packages/sv/src/cli/tests/snapshots/create-with-all-addons/package.json @@ -19,9 +19,10 @@ "db:generate": "drizzle-kit generate", "db:migrate": "drizzle-kit migrate", "db:studio": "drizzle-kit studio", - "auth:schema": "npx @better-auth/cli generate --config src/lib/server/auth.ts --output src/lib/server/db/auth.schema.ts --yes" + "auth:schema": "better-auth generate --config src/lib/server/auth.ts --output src/lib/server/db/auth.schema.ts --yes" }, "devDependencies": { + "@better-auth/cli": "^1.4.18", "@eslint/compat": "^2.0.2", "@eslint/js": "^9.39.2", "@inlang/paraglide-js": "^2.10.0", From 03fc9479e763e859133770be8105ce6e268f06e6 Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Fri, 27 Feb 2026 20:21:49 +0800 Subject: [PATCH 08/10] add changeset --- .changeset/sweet-moose-raise.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/sweet-moose-raise.md diff --git a/.changeset/sweet-moose-raise.md b/.changeset/sweet-moose-raise.md new file mode 100644 index 000000000..b28329aa3 --- /dev/null +++ b/.changeset/sweet-moose-raise.md @@ -0,0 +1,5 @@ +--- +"sv": patch +--- + +fix: install `@bettter-auth/cli` as a dev dependency From ff156eead176f57ff9769158244fd618c5725af1 Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Sat, 28 Feb 2026 00:44:45 +0800 Subject: [PATCH 09/10] Update .changeset/sweet-moose-raise.md Co-authored-by: Antoine Lethimonnier <43064022+WarningImHack3r@users.noreply.github.com> --- .changeset/sweet-moose-raise.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/sweet-moose-raise.md b/.changeset/sweet-moose-raise.md index b28329aa3..614802bd2 100644 --- a/.changeset/sweet-moose-raise.md +++ b/.changeset/sweet-moose-raise.md @@ -2,4 +2,4 @@ "sv": patch --- -fix: install `@bettter-auth/cli` as a dev dependency +fix: install `@better-auth/cli` as a dev dependency From d5d7c93a71ac5202b71d9ab66c0416829ab01397 Mon Sep 17 00:00:00 2001 From: Scott Wu Date: Sat, 28 Feb 2026 09:53:30 +0800 Subject: [PATCH 10/10] remove corepack reference --- CONTRIBUTING.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 6a8dc931d..9eed6f024 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -18,8 +18,7 @@ Please keep your pull requests focused to feature or issue. Focused smaller chan This is a monorepo, meaning the repo holds multiple packages. It requires the use of [pnpm](https://pnpm.io/). You can [install pnpm](https://pnpm.io/installation) with: ```sh -npm i -g corepack@latest -corepack enable pnpm +npm i -g pnpm ``` _(Optional)_ For running certain packages and tests locally you will need to install [docker](https://docs.docker.com/get-started/get-docker).