create-convex-monorepo 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +37 -17
- package/dist/cli/index.js +3 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/commands/create.d.ts +1 -1
- package/dist/commands/create.js +5 -0
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/entry.d.ts +1 -0
- package/dist/commands/entry.js +93 -0
- package/dist/commands/entry.js.map +1 -0
- package/dist/generator/context.js +5 -2
- package/dist/generator/context.js.map +1 -1
- package/dist/generator/format.d.ts +9 -0
- package/dist/generator/format.js +47 -0
- package/dist/generator/format.js.map +1 -0
- package/dist/templates/root/index.js +7 -1
- package/dist/templates/root/index.js.map +1 -1
- package/dist/templates/versions.d.ts +1 -0
- package/dist/templates/versions.js +1 -0
- package/dist/templates/versions.js.map +1 -1
- package/dist/workspace/add.js +6 -6
- package/dist/workspace/add.js.map +1 -1
- package/docs/architecture.md +4 -2
- package/docs/verification.md +8 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -28,31 +28,40 @@ Contributors can run the checkout with `pnpm dev`; see [CONTRIBUTING.md](CONTRIB
|
|
|
28
28
|
|
|
29
29
|
## Manage an existing workspace
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Run the same CLI from the workspace root or any subdirectory. No global or project installation is needed:
|
|
32
32
|
|
|
33
33
|
```sh
|
|
34
|
-
|
|
35
|
-
pnpm exec convex-monorepo add
|
|
34
|
+
npx create-convex-monorepo@latest
|
|
36
35
|
```
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
With a terminal attached, it detects `convex-monorepo.json` and offers a menu to add an app, add Clerk, check the workspace, sync frontend URLs, or check for updates. Without a terminal, it prints management help without changing files.
|
|
38
|
+
|
|
39
|
+
You can also run each command directly:
|
|
39
40
|
|
|
40
41
|
```sh
|
|
41
|
-
|
|
42
|
-
npx
|
|
42
|
+
npx create-convex-monorepo@latest add app admin --framework vite --example none --dry-run
|
|
43
|
+
npx create-convex-monorepo@latest add app admin --framework vite --example none --install
|
|
44
|
+
npx create-convex-monorepo@latest add app mobile --framework expo --no-install
|
|
45
|
+
npx create-convex-monorepo@latest add auth clerk --dry-run
|
|
46
|
+
npx create-convex-monorepo@latest add auth clerk --install
|
|
47
|
+
npx create-convex-monorepo@latest env sync --app mobile
|
|
48
|
+
npx create-convex-monorepo@latest doctor
|
|
49
|
+
npx create-convex-monorepo@latest upgrade --check
|
|
43
50
|
```
|
|
44
51
|
|
|
45
|
-
|
|
52
|
+
The same commands work through pnpm:
|
|
53
|
+
|
|
54
|
+
```sh
|
|
55
|
+
pnpm create convex-monorepo@latest add app admin --framework vite --no-install
|
|
56
|
+
pnpm create convex-monorepo@latest doctor
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
The separate `convex-monorepo` binary remains available for users who install the package locally or globally. For example, after `pnpm add -Dw create-convex-monorepo@latest`, run `pnpm exec convex-monorepo doctor`.
|
|
60
|
+
|
|
61
|
+
To explicitly generate a new project, use `create <project-name>`. This also lets you use a command name such as `doctor` as the project name:
|
|
46
62
|
|
|
47
63
|
```sh
|
|
48
|
-
|
|
49
|
-
pnpm exec convex-monorepo add app admin --framework vite --example none --install
|
|
50
|
-
pnpm exec convex-monorepo add app mobile --framework expo --no-install
|
|
51
|
-
pnpm exec convex-monorepo add auth clerk --dry-run
|
|
52
|
-
pnpm exec convex-monorepo add auth clerk --install
|
|
53
|
-
pnpm exec convex-monorepo env sync --app mobile
|
|
54
|
-
pnpm exec convex-monorepo doctor
|
|
55
|
-
pnpm exec convex-monorepo upgrade --check
|
|
64
|
+
npx create-convex-monorepo@latest create doctor --apps vite --no-install --no-git
|
|
56
65
|
```
|
|
57
66
|
|
|
58
67
|
| Command | Behavior |
|
|
@@ -179,7 +188,7 @@ Use explicit names to choose folders and repeat a framework:
|
|
|
179
188
|
pnpm create convex-monorepo@latest acme --apps web:next,admin:next,mobile:expo --yes
|
|
180
189
|
```
|
|
181
190
|
|
|
182
|
-
Apps become `@acme/web`, `@acme/admin`, and `@acme/mobile`. All depend on `@acme/backend` through `workspace:*`. The generator assigns distinct web development ports.
|
|
191
|
+
Apps become `@acme/web`, `@acme/admin`, and `@acme/mobile`. All depend on `@acme/backend` through `workspace:*`. The generator assigns distinct web development ports. Use `npx create-convex-monorepo@latest add app` to add another frontend later.
|
|
183
192
|
|
|
184
193
|
## First run and development
|
|
185
194
|
|
|
@@ -205,6 +214,17 @@ pnpm build
|
|
|
205
214
|
|
|
206
215
|
Complete setup in a normal terminal before starting Turbo. Stop a separately running backend watcher before `pnpm dev`, which starts its own. Public environment values are embedded at build time; rebuild frontends when they change. Backend build checks types and does not deploy.
|
|
207
216
|
|
|
217
|
+
## Code formatting
|
|
218
|
+
|
|
219
|
+
Generated source and configuration files are formatted with Prettier before they are written, including when using `--no-install`. New workspaces include a pinned Prettier dependency and matching configuration:
|
|
220
|
+
|
|
221
|
+
```sh
|
|
222
|
+
pnpm format
|
|
223
|
+
pnpm format:check
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Convex `_generated` files, TanStack's generated route tree, build output, lockfiles, and environment files are excluded. Adding an app formats its new files; it does not reformat existing application code. Auth migration accepts formatting differences in older starters while still rejecting customized code that would be replaced.
|
|
227
|
+
|
|
208
228
|
## Convex backend sharing
|
|
209
229
|
|
|
210
230
|
```ts
|
|
@@ -255,7 +275,7 @@ See [CONTRIBUTING.md](CONTRIBUTING.md), [adding a framework](docs/adding-a-frame
|
|
|
255
275
|
|
|
256
276
|
## Roadmap
|
|
257
277
|
|
|
258
|
-
|
|
278
|
+
Next candidates are reviewed upgrade migrations, additional auth providers, and more package-manager adapters. `upgrade --check` currently reports versions without changing dependencies.
|
|
259
279
|
|
|
260
280
|
MIT licensed. See [LICENSE](LICENSE).
|
|
261
281
|
|
package/dist/cli/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { getPackageVersion } from '../version.js';
|
|
3
|
-
import {
|
|
3
|
+
import { runEntry } from '../commands/entry.js';
|
|
4
4
|
const controller = new AbortController();
|
|
5
|
-
const interrupt = () => controller.abort(new Error('
|
|
5
|
+
const interrupt = () => controller.abort(new Error('Command interrupted.'));
|
|
6
6
|
process.once('SIGINT', interrupt);
|
|
7
7
|
process.once('SIGTERM', interrupt);
|
|
8
8
|
try {
|
|
9
|
-
await
|
|
9
|
+
await runEntry(process.argv.slice(2), await getPackageVersion(), controller.signal);
|
|
10
10
|
}
|
|
11
11
|
catch (error) {
|
|
12
12
|
console.error(`Error: ${error instanceof Error ? error.message : String(error)}`);
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AACzC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC5E,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AACnC,IAAI,CAAC;IACH,MAAM,QAAQ,CACZ,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EACrB,MAAM,iBAAiB,EAAE,EACzB,UAAU,CAAC,MAAM,CAClB,CAAC;AACJ,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CACX,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACnE,CAAC;IACF,OAAO,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;QAAS,CAAC;IACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC5C,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC/C,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type RawOptions } from '../generator/options.js';
|
|
2
|
-
export declare const help = "create-convex-monorepo [project-name] [options]\n\nGenerate a pnpm + Turborepo workspace sharing one Convex backend.\n\n --apps <list> next,vite,tanstack-start,expo or web:next,admin:vite\n --example <name> messages (default) or none for blank apps\n --auth <provider> none (default) or clerk\n --package-manager <name> pnpm (v0.1)\n --install / --no-install Install generated dependencies\n --init-convex / --no-init-convex Set up Convex and link URLs (requires install)\n --git / --no-git Initialize a git repository\n --yes, -y Accept defaults, including installation and git\n --help, -h Show usage\n --version, -v Show version\n\nWithout a terminal, prompts are disabled. Installation and git default to off\nunless explicitly enabled or --yes is passed. Convex setup requires --init-convex\nwhen prompts are skipped; --yes does not opt into Convex account setup.\nNamed apps may repeat a framework.\n";
|
|
2
|
+
export declare const help = "create-convex-monorepo [project-name] [options]\n\nGenerate a pnpm + Turborepo workspace sharing one Convex backend.\n\nUse create <project-name> to explicitly create a project, including names such\nas add or doctor. Inside an existing workspace, running without arguments opens\nthe management menu. Commands: add app, add auth clerk, doctor, env sync,\nupgrade --check. No global or project installation is required.\n\n --apps <list> next,vite,tanstack-start,expo or web:next,admin:vite\n --example <name> messages (default) or none for blank apps\n --auth <provider> none (default) or clerk\n --package-manager <name> pnpm (v0.1)\n --install / --no-install Install generated dependencies\n --init-convex / --no-init-convex Set up Convex and link URLs (requires install)\n --git / --no-git Initialize a git repository\n --yes, -y Accept defaults, including installation and git\n --help, -h Show usage\n --version, -v Show version\n\nWithout a terminal, prompts are disabled. Installation and git default to off\nunless explicitly enabled or --yes is passed. Convex setup requires --init-convex\nwhen prompts are skipped; --yes does not opt into Convex account setup.\nNamed apps may repeat a framework.\n";
|
|
3
3
|
export declare function parseCommand(args: string[]): {
|
|
4
4
|
raw: RawOptions;
|
|
5
5
|
help: boolean;
|
package/dist/commands/create.js
CHANGED
|
@@ -6,6 +6,11 @@ export const help = `create-convex-monorepo [project-name] [options]
|
|
|
6
6
|
|
|
7
7
|
Generate a pnpm + Turborepo workspace sharing one Convex backend.
|
|
8
8
|
|
|
9
|
+
Use create <project-name> to explicitly create a project, including names such
|
|
10
|
+
as add or doctor. Inside an existing workspace, running without arguments opens
|
|
11
|
+
the management menu. Commands: add app, add auth clerk, doctor, env sync,
|
|
12
|
+
upgrade --check. No global or project installation is required.
|
|
13
|
+
|
|
9
14
|
--apps <list> next,vite,tanstack-start,expo or web:next,admin:vite
|
|
10
15
|
--example <name> messages (default) or none for blank apps
|
|
11
16
|
--auth <provider> none (default) or clerk
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,mBAAmB,GAEpB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,CAAC,MAAM,IAAI,GAAG
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../src/commands/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function runEntry(args: string[], version: string, signal?: AbortSignal): Promise<void>;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as prompts from '@clack/prompts';
|
|
2
|
+
import { lstat } from 'node:fs/promises';
|
|
3
|
+
import { dirname, join, resolve } from 'node:path';
|
|
4
|
+
import { isMissing, loadWorkspace } from '../workspace/project.js';
|
|
5
|
+
import { help, parseCommand, runCreate } from './create.js';
|
|
6
|
+
import { runWorkspace, workspaceHelp } from './workspace.js';
|
|
7
|
+
const managementCommands = new Set(['add', 'doctor', 'env', 'upgrade']);
|
|
8
|
+
const actions = [
|
|
9
|
+
{ value: 'app', label: 'Add an application', args: ['add', 'app'] },
|
|
10
|
+
{
|
|
11
|
+
value: 'auth',
|
|
12
|
+
label: 'Add Clerk authentication',
|
|
13
|
+
args: ['add', 'auth', 'clerk'],
|
|
14
|
+
},
|
|
15
|
+
{ value: 'doctor', label: 'Check workspace setup', args: ['doctor'] },
|
|
16
|
+
{ value: 'env', label: 'Sync frontend Convex URLs', args: ['env', 'sync'] },
|
|
17
|
+
{
|
|
18
|
+
value: 'upgrade',
|
|
19
|
+
label: 'Check for CLI updates',
|
|
20
|
+
args: ['upgrade', '--check'],
|
|
21
|
+
},
|
|
22
|
+
];
|
|
23
|
+
const managementHelp = workspaceHelp.replace('convex-monorepo <command>', 'npx create-convex-monorepo@latest <command>');
|
|
24
|
+
/** Absence is optional; malformed or unsafe metadata must still fail. */
|
|
25
|
+
async function existingWorkspace() {
|
|
26
|
+
let directory = resolve(process.cwd());
|
|
27
|
+
while (true) {
|
|
28
|
+
try {
|
|
29
|
+
await lstat(join(directory, 'convex-monorepo.json'));
|
|
30
|
+
return loadWorkspace(directory);
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (!isMissing(error))
|
|
34
|
+
throw error;
|
|
35
|
+
}
|
|
36
|
+
const parent = dirname(directory);
|
|
37
|
+
if (parent === directory)
|
|
38
|
+
return null;
|
|
39
|
+
directory = parent;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export async function runEntry(args, version, signal) {
|
|
43
|
+
if (args[0] === 'create') {
|
|
44
|
+
await runCreate(args.slice(1), version, signal);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
if (args[0] && managementCommands.has(args[0])) {
|
|
48
|
+
await runWorkspace(args, version, signal);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (args[0] === 'help') {
|
|
52
|
+
// Let the existing parser reject extra arguments and unknown flags.
|
|
53
|
+
await runWorkspace(args, version, signal);
|
|
54
|
+
console.log(help);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const parsed = parseCommand(args);
|
|
58
|
+
if (parsed.help) {
|
|
59
|
+
console.log(`${help}\n${managementHelp}`);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (parsed.version) {
|
|
63
|
+
console.log(version);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
signal?.throwIfAborted();
|
|
67
|
+
if (parsed.raw.name === undefined) {
|
|
68
|
+
const workspace = await existingWorkspace();
|
|
69
|
+
if (workspace) {
|
|
70
|
+
if (args.length)
|
|
71
|
+
throw new Error('An existing Convex monorepo was found. Choose a workspace command, or use create <project-name> to generate another project. Run npx create-convex-monorepo@latest --help.');
|
|
72
|
+
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
73
|
+
console.log(`Existing workspace: ${workspace.config.name}\n\n${managementHelp}`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
signal?.throwIfAborted();
|
|
77
|
+
const action = await prompts.select({
|
|
78
|
+
message: `Manage ${workspace.config.name}: what would you like to do?`,
|
|
79
|
+
options: actions.map(({ value, label }) => ({ value, label })),
|
|
80
|
+
});
|
|
81
|
+
if (prompts.isCancel(action))
|
|
82
|
+
throw new Error('Workspace command cancelled.');
|
|
83
|
+
signal?.throwIfAborted();
|
|
84
|
+
const selected = actions.find(({ value }) => value === action);
|
|
85
|
+
if (!selected)
|
|
86
|
+
throw new Error('Unknown workspace action.');
|
|
87
|
+
await runWorkspace([...selected.args], version, signal);
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
await runCreate(args, version, signal);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=entry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entry.js","sourceRoot":"","sources":["../../src/commands/entry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { mkdir, readFile, writeFile, lstat } from 'node:fs/promises';
|
|
2
2
|
import { dirname, isAbsolute, relative, resolve, sep } from 'node:path';
|
|
3
|
+
import { formatGeneratedFile } from './format.js';
|
|
3
4
|
export function mergeManifests(base, patch) {
|
|
4
5
|
const result = { ...base, ...patch };
|
|
5
6
|
for (const field of [
|
|
@@ -63,7 +64,9 @@ export function createContext(root, options) {
|
|
|
63
64
|
if (owned.has(target))
|
|
64
65
|
throw new Error(`Template output collision: ${path}`);
|
|
65
66
|
await mkdir(dirname(target), { recursive: true });
|
|
66
|
-
await writeFile(target, contents, {
|
|
67
|
+
await writeFile(target, await formatGeneratedFile(path, contents), {
|
|
68
|
+
flag: 'wx',
|
|
69
|
+
});
|
|
67
70
|
owned.add(target);
|
|
68
71
|
},
|
|
69
72
|
async json(path, value) {
|
|
@@ -74,7 +77,7 @@ export function createContext(root, options) {
|
|
|
74
77
|
if (!owned.has(target))
|
|
75
78
|
throw new Error(`Cannot patch a package not generated by this context: ${path}`);
|
|
76
79
|
const base = JSON.parse(await readFile(target, 'utf8'));
|
|
77
|
-
await writeFile(target, `${JSON.stringify(mergeManifests(base, patch), null, 2)}\n`);
|
|
80
|
+
await writeFile(target, await formatGeneratedFile(path, `${JSON.stringify(mergeManifests(base, patch), null, 2)}\n`));
|
|
78
81
|
},
|
|
79
82
|
};
|
|
80
83
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/generator/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const formattingOptions: {
|
|
2
|
+
singleQuote: true;
|
|
3
|
+
trailingComma: "all";
|
|
4
|
+
endOfLine: "lf";
|
|
5
|
+
};
|
|
6
|
+
/** Format only authored output, with no config/plugin discovery or subprocess. */
|
|
7
|
+
export declare function formatGeneratedFile(path: string, source: string): Promise<string>;
|
|
8
|
+
/** Accept formatting differences in older starters, but retain code/comment conflicts. */
|
|
9
|
+
export declare function equivalentGeneratedFile(path: string, left: string | null | undefined, right: string | null | undefined): Promise<boolean>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { extname } from 'node:path';
|
|
2
|
+
import { format } from 'prettier';
|
|
3
|
+
export const formattingOptions = {
|
|
4
|
+
singleQuote: true,
|
|
5
|
+
trailingComma: 'all',
|
|
6
|
+
endOfLine: 'lf',
|
|
7
|
+
};
|
|
8
|
+
const extensions = new Set([
|
|
9
|
+
'.ts',
|
|
10
|
+
'.tsx',
|
|
11
|
+
'.mts',
|
|
12
|
+
'.cts',
|
|
13
|
+
'.js',
|
|
14
|
+
'.jsx',
|
|
15
|
+
'.mjs',
|
|
16
|
+
'.cjs',
|
|
17
|
+
'.json',
|
|
18
|
+
'.css',
|
|
19
|
+
'.html',
|
|
20
|
+
'.md',
|
|
21
|
+
'.yaml',
|
|
22
|
+
'.yml',
|
|
23
|
+
]);
|
|
24
|
+
/** Format only authored output, with no config/plugin discovery or subprocess. */
|
|
25
|
+
export async function formatGeneratedFile(path, source) {
|
|
26
|
+
if (path.split('/').includes('_generated') ||
|
|
27
|
+
path.endsWith('/routeTree.gen.ts'))
|
|
28
|
+
return source;
|
|
29
|
+
if (!extensions.has(extname(path)))
|
|
30
|
+
return source;
|
|
31
|
+
return format(source, { ...formattingOptions, filepath: path });
|
|
32
|
+
}
|
|
33
|
+
/** Accept formatting differences in older starters, but retain code/comment conflicts. */
|
|
34
|
+
export async function equivalentGeneratedFile(path, left, right) {
|
|
35
|
+
if (left == null || right == null)
|
|
36
|
+
return left === right;
|
|
37
|
+
if (left.replace(/\r\n/g, '\n') === right.replace(/\r\n/g, '\n'))
|
|
38
|
+
return true;
|
|
39
|
+
try {
|
|
40
|
+
return ((await formatGeneratedFile(path, left)) ===
|
|
41
|
+
(await formatGeneratedFile(path, right)));
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/generator/format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAgB,MAAM,UAAU,CAAC;AAEhD,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,KAAK;IACpB,SAAS,EAAE,IAAI;CACE,CAAC;AAEpB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IACzB,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;IACN,OAAO;IACP,MAAM;IACN,OAAO;IACP,KAAK;IACL,OAAO;IACP,MAAM;CACP,CAAC,CAAC;AAEH,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAY,EACZ,MAAc;IAEd,IACE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAElC,OAAO,MAAM,CAAC;IAChB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IAClD,OAAO,MAAM,CAAC,MAAM,EAAE,EAAE,GAAG,iBAAiB,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,0FAA0F;AAC1F,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAAY,EACZ,IAA+B,EAC/B,KAAgC;IAEhC,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,KAAK,KAAK,CAAC;IACzD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9E,IAAI,CAAC;QACH,OAAO,CACL,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC,MAAM,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CACzC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { getPackageVersion } from '../../version.js';
|
|
3
3
|
import { versions as v } from '../versions.js';
|
|
4
|
+
import { formattingOptions } from '../../generator/format.js';
|
|
4
5
|
export async function generateRoot(ctx) {
|
|
5
6
|
const { options, scope } = ctx;
|
|
6
7
|
await ctx.write('scripts/convex-setup.mjs', await readFile(new URL('../../../assets/setup/convex-setup.mjs', import.meta.url), 'utf8'));
|
|
@@ -12,6 +13,8 @@ export async function generateRoot(ctx) {
|
|
|
12
13
|
build: 'turbo run build',
|
|
13
14
|
typecheck: 'turbo run typecheck',
|
|
14
15
|
lint: 'turbo run lint',
|
|
16
|
+
format: 'prettier --write .',
|
|
17
|
+
'format:check': 'prettier --check .',
|
|
15
18
|
};
|
|
16
19
|
for (const app of options.apps)
|
|
17
20
|
scripts[`dev:${app.name}`] = `pnpm --filter @${scope}/${app.name} dev`;
|
|
@@ -23,8 +26,10 @@ export async function generateRoot(ctx) {
|
|
|
23
26
|
packageManager: `pnpm@${v.pnpm}`,
|
|
24
27
|
engines: { node: '>=22.12.0' },
|
|
25
28
|
scripts,
|
|
26
|
-
devDependencies: { turbo: v.turbo },
|
|
29
|
+
devDependencies: { turbo: v.turbo, prettier: v.prettier },
|
|
27
30
|
});
|
|
31
|
+
await ctx.json('.prettierrc.json', formattingOptions);
|
|
32
|
+
await ctx.write('.prettierignore', 'node_modules/\n**/_generated/\n**/routeTree.gen.ts\n**/.next/\n**/.expo/\n**/.output/\n**/dist/\n**/.turbo/\npnpm-lock.yaml\n.env*\n**/.env*\n');
|
|
28
33
|
await ctx.write('pnpm-workspace.yaml', "packages:\n - 'apps/*'\n - 'packages/*'\n\nonlyBuiltDependencies:\n - esbuild\n - sharp\n - unrs-resolver\n");
|
|
29
34
|
await ctx.json('turbo.json', {
|
|
30
35
|
$schema: 'https://turborepo.com/schema.json',
|
|
@@ -152,6 +157,7 @@ ${options.apps.map((a) => `pnpm dev:${a.name}`).join('\n')}
|
|
|
152
157
|
pnpm convex:dev
|
|
153
158
|
pnpm typecheck
|
|
154
159
|
pnpm lint
|
|
160
|
+
pnpm format:check
|
|
155
161
|
pnpm build
|
|
156
162
|
\`\`\`
|
|
157
163
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/root/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,QAAQ,IAAI,CAAC,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/root/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/templates/versions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,aAAa,EAAE,UAAU;IACzB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,QAAQ;CAClB,CAAC"}
|
|
1
|
+
{"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/templates/versions.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,QAAQ,EAAE,OAAO;IACjB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,QAAQ;IACf,UAAU,EAAE,OAAO;IACnB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,SAAS;IAChB,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE,OAAO;IACb,SAAS,EAAE,OAAO;IAClB,aAAa,EAAE,UAAU;IACzB,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,OAAO;IAClB,UAAU,EAAE,QAAQ;IACpB,SAAS,EAAE,OAAO;IAClB,MAAM,EAAE,SAAS;IACjB,gBAAgB,EAAE,QAAQ;CAClB,CAAC"}
|
package/dist/workspace/add.js
CHANGED
|
@@ -3,11 +3,10 @@ import { tmpdir } from 'node:os';
|
|
|
3
3
|
import { join } from 'node:path';
|
|
4
4
|
import { generateProject, normalizeOptions } from '../generator/index.js';
|
|
5
5
|
import { readText } from './project.js';
|
|
6
|
+
import { equivalentGeneratedFile } from '../generator/format.js';
|
|
6
7
|
import { readBackendEnvironment } from './env.js';
|
|
7
8
|
import { deploymentUrl, linkEnvironment, publicVariable, } from '../../assets/setup/convex-setup.mjs';
|
|
8
9
|
const json = (value) => `${JSON.stringify(value, null, 2)}\n`;
|
|
9
|
-
const normalizeNewlines = (text) => text?.replace(/\r\n/g, '\n');
|
|
10
|
-
const equivalent = (left, right) => normalizeNewlines(left) === normalizeNewlines(right);
|
|
11
10
|
const retainNewlines = (text, original) => original?.includes('\r\n') ? text.replace(/\r?\n/g, '\r\n') : text;
|
|
12
11
|
async function render(workspace, apps, example, auth) {
|
|
13
12
|
const temporary = await mkdtemp(join(tmpdir(), 'ccm-add-'));
|
|
@@ -97,7 +96,8 @@ async function verifyMessages(workspace, plan, baseline) {
|
|
|
97
96
|
for (const name of ['schema.ts', 'messages.ts', 'access.ts']) {
|
|
98
97
|
const path = `packages/backend/convex/${name}`;
|
|
99
98
|
const contents = await guardedRead(workspace, plan, path);
|
|
100
|
-
if (contents === null ||
|
|
99
|
+
if (contents === null ||
|
|
100
|
+
!(await equivalentGeneratedFile(path, contents, baseline.get(path))))
|
|
101
101
|
throw new Error(`Incompatible messages backend: ${path} is missing or customized. Restore the generated messages contract, or add an app with --example none.`);
|
|
102
102
|
}
|
|
103
103
|
}
|
|
@@ -210,7 +210,7 @@ export async function planAddApp(workspace, options) {
|
|
|
210
210
|
await verifyMessages(workspace, plan, generated);
|
|
211
211
|
if (workspace.config.auth === 'clerk') {
|
|
212
212
|
const path = 'packages/backend/convex/auth.config.ts';
|
|
213
|
-
if (!
|
|
213
|
+
if (!(await equivalentGeneratedFile(path, await guardedRead(workspace, plan, path), generated.get(path))))
|
|
214
214
|
throw new Error(`Incompatible Clerk configuration in ${path}.`);
|
|
215
215
|
}
|
|
216
216
|
for (const [path, after] of generated) {
|
|
@@ -281,7 +281,7 @@ export async function planAddAuth(workspace, provider) {
|
|
|
281
281
|
continue;
|
|
282
282
|
const baseline = before.get(path) ?? null;
|
|
283
283
|
const current = await readText(workspace.root, path);
|
|
284
|
-
if (
|
|
284
|
+
if (await equivalentGeneratedFile(path, current, target)) {
|
|
285
285
|
plan.guards.push({ path, contents: current });
|
|
286
286
|
continue;
|
|
287
287
|
}
|
|
@@ -290,7 +290,7 @@ export async function planAddAuth(workspace, provider) {
|
|
|
290
290
|
current !== null &&
|
|
291
291
|
baseline !== null)
|
|
292
292
|
next = mergePackage(current, baseline, target, path);
|
|
293
|
-
else if (!
|
|
293
|
+
else if (!(await equivalentGeneratedFile(path, current, baseline)))
|
|
294
294
|
throw new Error(`Conflict in ${path}: file is customized or already exists. No files were changed.`);
|
|
295
295
|
plan.changes.push({
|
|
296
296
|
path,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/workspace/add.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/workspace/add.ts"],"names":[],"mappings":"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"}
|
package/docs/architecture.md
CHANGED
|
@@ -20,6 +20,8 @@ An auth adapter implements `apply(context)`. It owns backend `access.ts`, option
|
|
|
20
20
|
|
|
21
21
|
`context.write` and `context.json` create files once and reject unsafe paths and collisions. `context.mergePackage` can update only manifests created by that context. Dependency maps merge by key and reject conflicting versions; script patches replace matching script keys. Other top-level manifest fields replace their previous values. This is intentionally not a generic deep-merge engine.
|
|
22
22
|
|
|
23
|
+
`src/generator/format.ts` uses the pinned Prettier runtime API with explicit options before authored files are written. It never resolves user configuration or loads user plugins. Convex `_generated` assets, route-tree output, and unsupported extensions such as dotenv pass through unchanged. Generated workspaces receive matching format scripts, configuration, and ignore patterns. Formatting failure is a generation failure and uses the same staging cleanup.
|
|
24
|
+
|
|
23
25
|
The package-manager contract lives in `src/package-manager/index.ts`. pnpm owns installation; subprocesses receive argument arrays and inherited terminal output. The root template owns Turborepo and workspace configuration. There is no Nx adapter or speculative migration engine.
|
|
24
26
|
|
|
25
27
|
## Shared Convex API
|
|
@@ -50,9 +52,9 @@ Blank apps do not include tests that assume an empty API forever. The generated-
|
|
|
50
52
|
|
|
51
53
|
## Workspace commands
|
|
52
54
|
|
|
53
|
-
Both binaries ship in `create-convex-monorepo
|
|
55
|
+
Both binaries ship in `create-convex-monorepo`. `src/commands/entry.ts` routes the create binary to creation or workspace commands, so the same npm package works through npx without a local or global installation. With no arguments, existing workspace metadata selects an interactive management menu or noninteractive help. Explicit `create <name>` resolves reserved-name ambiguity. The separate `convex-monorepo` binary remains a management-only entry point. `src/commands/workspace.ts` parses command-specific options and prompts. Application logic lives in `src/workspace` and is exported for programmatic use.
|
|
54
56
|
|
|
55
|
-
`project.ts` walks upward to metadata, validates version 1, retains extension fields, and rejects unsafe file paths. `add.ts` renders temporary scaffolds with the existing app/auth adapters, then selects only the new app or authentication changes. Auth package updates merge only the fields changed by the adapter; source files must match the expected baseline before replacement. Per-app example overrides survive later auth additions.
|
|
57
|
+
`project.ts` walks upward to metadata, validates version 1, retains extension fields, and rejects unsafe file paths. `add.ts` renders temporary scaffolds with the existing app/auth adapters, then selects only the new app or authentication changes. Auth package updates merge only the fields changed by the adapter; source files must match the expected baseline before replacement. Comparison normalizes formatting with the same formatter to support older unformatted templates, preserving meaningful code and comment differences as conflicts. Apply-time snapshots still compare exact contents. Per-app example overrides survive later auth additions.
|
|
56
58
|
|
|
57
59
|
`env.ts` shares the standalone setup script's URL validation and dotenv linking helpers. A declaration file types that plain JavaScript module for the compiled CLI; the JavaScript implementation is separately checked by TypeScript. Generated projects still receive the standalone script and need no CLI dependency for initial Convex setup.
|
|
58
60
|
|
package/docs/verification.md
CHANGED
|
@@ -104,3 +104,11 @@ The workspace-command implementation passed frozen installation, formatting, lin
|
|
|
104
104
|
The packed package exposes both binaries. Its smoke test exercises `convex-monorepo` through the installed executable and pnpm dlx, adds an app and Clerk, and syncs one frontend URL. The live npm upgrade check returned the current stable release from the official registry. Doctor also passed from a nested application directory in an installed four-app workspace. A PTY run exercised interactive app, framework, and starter selection with `--dry-run`; the proposed directory was not created.
|
|
105
105
|
|
|
106
106
|
Independent technical review covered mutation plans and CLI integration. Follow-up checks confirmed fixes for workspace-membership diagnostics and semantic-version build metadata. Integration checks also caught development-port collisions, which now have regression tests. Filesystem conflict detection remains optimistic for unrelated external writers; the lock coordinates CLI invocations. No real Clerk login, stored-data migration, or native Xcode/Gradle build was performed. Hosted CI includes the two command-based build scenarios and Windows unit/package checks.
|
|
107
|
+
|
|
108
|
+
## Generated formatting and npx management
|
|
109
|
+
|
|
110
|
+
On 2026-09-11, the formatting and launcher follow-up passed lint, typecheck, formatting, all 282 tests, build, pack, and installed-tarball checks. The formatter matrix covers every framework with both auth and content choices, verifies unchanged official Convex generated assets, and rejects project-config execution. A captured v0.3.0 fixture verifies that unformatted apps still accept app additions and Clerk migration without rewriting existing schema or message functions.
|
|
111
|
+
|
|
112
|
+
Both command-driven all-four-framework scenarios passed generated formatting checks, doctor with no issues, typecheck, lint, web builds, and Expo iOS/Android Metro exports. One adds Clerk after creating the messages apps; the other adds blank apps after Clerk setup. These checks now exercise the create binary for workspace commands. The packed CLI also runs management through npx from a nested app directory without installing dependencies in the generated workspace.
|
|
113
|
+
|
|
114
|
+
A manual PTY check displayed all five management actions from an app's src directory and cancelled without applying changes. A fresh read-only review found no material issues and independently passed 101 focused tests. Native device execution and real Clerk login were not repeated for this change.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-convex-monorepo",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Generate typed Convex monorepos with composable frontend and authentication adapters.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -30,7 +30,8 @@
|
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@clack/prompts": "1.8.0",
|
|
33
|
-
"cross-spawn": "7.0.6"
|
|
33
|
+
"cross-spawn": "7.0.6",
|
|
34
|
+
"prettier": "3.8.3"
|
|
34
35
|
},
|
|
35
36
|
"devDependencies": {
|
|
36
37
|
"@types/cross-spawn": "6.0.6",
|
|
@@ -38,7 +39,6 @@
|
|
|
38
39
|
"convex": "1.45.0",
|
|
39
40
|
"convex-test": "0.0.54",
|
|
40
41
|
"eslint": "10.10.0",
|
|
41
|
-
"prettier": "3.8.3",
|
|
42
42
|
"tsx": "4.21.0",
|
|
43
43
|
"typescript": "6.0.3",
|
|
44
44
|
"typescript-eslint": "8.70.0",
|