create-vitnode-app 1.2.0-canary.52 → 1.2.0-canary.53

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.
Files changed (47) hide show
  1. package/README.md +1 -1
  2. package/copy-of-vitnode-app/.vscode/settings.json +29 -0
  3. package/copy-of-vitnode-app/api/drizzle.config.ts +4 -4
  4. package/copy-of-vitnode-app/api/src/index.ts +7 -7
  5. package/copy-of-vitnode-app/api/src/vitnode.api.config.ts +8 -9
  6. package/copy-of-vitnode-app/api/tsconfig.json +1 -1
  7. package/copy-of-vitnode-app/api-bun/src/index.ts +4 -4
  8. package/copy-of-vitnode-app/api-single-app/drizzle.config.ts +4 -4
  9. package/copy-of-vitnode-app/api-single-app/src/app/api/[...route]/route.ts +5 -5
  10. package/copy-of-vitnode-app/api-single-app/src/vitnode.api.config.ts +6 -7
  11. package/copy-of-vitnode-app/biome/biome.json +5 -0
  12. package/copy-of-vitnode-app/monorepo/turbo.json +0 -6
  13. package/copy-of-vitnode-app/root/global.d.ts +2 -2
  14. package/copy-of-vitnode-app/root/next.config.ts +2 -2
  15. package/copy-of-vitnode-app/root/postcss.config.mjs +1 -1
  16. package/copy-of-vitnode-app/root/src/app/[locale]/(main)/[...rest]/page.tsx +1 -1
  17. package/copy-of-vitnode-app/root/src/app/[locale]/(main)/layout.tsx +3 -3
  18. package/copy-of-vitnode-app/root/src/app/[locale]/(main)/not-found.tsx +1 -1
  19. package/copy-of-vitnode-app/root/src/app/[locale]/(main)/page.tsx +11 -10
  20. package/copy-of-vitnode-app/root/src/app/[locale]/admin/(auth)/layout.tsx +2 -2
  21. package/copy-of-vitnode-app/root/src/app/[locale]/admin/page.tsx +1 -1
  22. package/copy-of-vitnode-app/root/src/app/[locale]/layout.tsx +9 -10
  23. package/copy-of-vitnode-app/root/src/app/global-error.tsx +8 -11
  24. package/copy-of-vitnode-app/root/src/app/global.css +3 -2
  25. package/copy-of-vitnode-app/root/src/app/layout.tsx +2 -2
  26. package/copy-of-vitnode-app/root/src/middleware.ts +5 -5
  27. package/copy-of-vitnode-app/root/src/vitnode.config.ts +8 -8
  28. package/copy-of-vitnode-app/root/tsconfig.json +1 -1
  29. package/dist/src/create/create-package-json.js +192 -201
  30. package/dist/src/create/create-vitnode.js +73 -73
  31. package/dist/src/helpers/get-available-package-managers.js +6 -6
  32. package/dist/src/helpers/get-package-json.js +2 -2
  33. package/dist/src/helpers/init-vitnode.js +7 -7
  34. package/dist/src/helpers/install-dependencies.js +35 -32
  35. package/dist/src/helpers/is-folder-empty.js +25 -26
  36. package/dist/src/helpers/is-online.js +16 -16
  37. package/dist/src/helpers/is-writeable.js +2 -2
  38. package/dist/src/helpers/validate-pkg.js +1 -1
  39. package/dist/src/index.js +28 -28
  40. package/dist/src/plugin/index.js +5 -5
  41. package/dist/src/prepare/prepare.js +5 -5
  42. package/dist/src/questions.js +29 -30
  43. package/dist/src/validation.js +15 -15
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +3 -6
  46. package/copy-of-vitnode-app/eslint/.prettierrc.mjs +0 -11
  47. package/copy-of-vitnode-app/eslint/eslint.config.mjs +0 -17
@@ -1,305 +1,296 @@
1
- import { readFile, writeFile } from 'fs/promises';
2
- import { dirname, join } from 'path';
3
- import { fileURLToPath } from 'url';
4
- import { getAvailablePackageManagers } from '../helpers/get-available-package-managers.js';
1
+ import { readFile, writeFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { getAvailablePackageManagers } from "../helpers/get-available-package-managers.js";
5
5
  const __filename = fileURLToPath(import.meta.url);
6
6
  const __dirname = dirname(__filename);
7
7
  const writeJson = async (path, data) => writeFile(path, JSON.stringify(data, null, 2));
8
8
  const paths = (root) => ({
9
9
  root,
10
- api: join(root, 'apps', 'api'),
11
- web: join(root, 'apps', 'web'),
10
+ api: join(root, "apps", "api"),
11
+ web: join(root, "apps", "web"),
12
12
  });
13
13
  const withIf = (cond, obj) => (cond ? obj : {});
14
14
  const versions = {
15
- typesNode: '^24',
16
- typesReact: '^19.1',
17
- typesReactDom: '^19.1',
18
- typesMdx: '^2.0.13',
19
- typesBun: 'latest',
20
- turbo: '^2.5.6',
21
- typescript: '^5.9.2',
22
- tsx: '^4.20.4',
23
- tscAlias: '^1.8.16',
24
- eslint: '^9.33.0',
25
- prettier: '^3.6.2',
26
- prettierTailwind: '^0.6.14',
27
- tailwind: '^4.1.12',
28
- tailwindPostcss: '^4.1.12',
29
- postcss: '^8.5.6',
30
- twAnimateCssWeb: '^1.3.7',
31
- twAnimateCssSingle: '^1.3.6',
32
- react: '^19.1',
33
- reactDom: '^19.1',
34
- nextSingle: '^15.5.0',
35
- nextWebInMonorepo: '^15.4.6',
36
- nextIntl: '^4.3.4',
37
- useIntl: '^4.3.4',
38
- rhf: '^7.62.0',
39
- rhfResolvers: '^5.1.1',
40
- lucide: '^0.540.0',
41
- sonner: '^2.0.7',
42
- dotenv: '^17.2.1',
43
- drizzleKitSingle: '^0.31.4',
44
- drizzleKitApi: '^0.31.3',
45
- drizzleOrm: '^0.44.4',
46
- hono: '^4.9.2',
47
- honoZodOpenapi: '^1.1.0',
48
- honoZodValidator: '^0.7.2',
49
- reactEmail: '^4.2.8',
50
- reactEmailComponents: '^0.5.1',
51
- zod: '^4.0.17',
52
- babelReactCompiler: '19.1.0-rc.2',
53
- cva: '^0.7.1',
15
+ typesNode: "^24",
16
+ typesReact: "^19.1",
17
+ typesReactDom: "^19.1",
18
+ typesMdx: "^2.0.13",
19
+ typesBun: "latest",
20
+ turbo: "^2.5.6",
21
+ typescript: "^5.9.2",
22
+ tsx: "^4.20.4",
23
+ tscAlias: "^1.8.16",
24
+ biome: "^2.2.2",
25
+ tailwind: "^4.1.12",
26
+ tailwindPostcss: "^4.1.12",
27
+ postcss: "^8.5.6",
28
+ twAnimateCssWeb: "^1.3.7",
29
+ twAnimateCssSingle: "^1.3.6",
30
+ react: "^19.1",
31
+ reactDom: "^19.1",
32
+ nextSingle: "^15.5.0",
33
+ nextWebInMonorepo: "^15.4.6",
34
+ nextIntl: "^4.3.4",
35
+ useIntl: "^4.3.4",
36
+ rhf: "^7.62.0",
37
+ rhfResolvers: "^5.1.1",
38
+ lucide: "^0.540.0",
39
+ sonner: "^2.0.7",
40
+ dotenv: "^17.2.1",
41
+ drizzleKitSingle: "^0.31.4",
42
+ drizzleKitApi: "^0.31.3",
43
+ drizzleOrm: "^0.44.4",
44
+ hono: "^4.9.2",
45
+ honoZodOpenapi: "^1.1.0",
46
+ honoZodValidator: "^0.7.2",
47
+ reactEmail: "^4.2.8",
48
+ reactEmailComponents: "^0.5.1",
49
+ zod: "^4.0.17",
50
+ babelReactCompiler: "19.1.0-rc.2",
51
+ cva: "^0.7.1",
54
52
  };
55
- const eslintScripts = {
56
- lint: 'eslint .',
57
- 'lint:fix': 'eslint . --fix',
53
+ const biomeScripts = {
54
+ lint: "biome check",
55
+ "lint:fix": "biome check . --write",
58
56
  };
59
57
  const dockerDevScript = (appName) => `docker compose -f ./docker-compose.yml -p ${appName}-vitnode-dev up -d`;
60
- const rootScripts = (enableEslint, enableDocker, appName) => ({
61
- 'db:migrate': 'turbo db:migrate',
62
- 'db:push': 'turbo db:push',
63
- init: 'turbo init',
64
- dev: 'turbo dev',
65
- build: 'turbo build',
66
- start: 'turbo start',
67
- ...withIf(enableEslint, eslintScripts),
68
- ...withIf(enableDocker, { 'docker:dev': dockerDevScript(appName) }),
58
+ const rootScripts = (enableBiome, enableDocker, appName) => ({
59
+ "db:migrate": "turbo db:migrate",
60
+ "db:push": "turbo db:push",
61
+ init: "turbo init",
62
+ dev: "turbo dev",
63
+ build: "turbo build",
64
+ start: "turbo start",
65
+ ...withIf(enableBiome, biomeScripts),
66
+ ...withIf(enableDocker, { "docker:dev": dockerDevScript(appName) }),
69
67
  });
70
- const apiScripts = (pm, eslint, docker, onlyApi, appName) => ({
71
- 'db:push': 'vitnode push',
72
- 'db:migrate': 'vitnode migrate',
73
- init: 'vitnode init --api',
74
- ...(pm === 'bun'
68
+ const apiScripts = (pm, biome, docker, onlyApi, appName) => ({
69
+ "db:push": "vitnode push",
70
+ "db:migrate": "vitnode migrate",
71
+ init: "vitnode init --api",
72
+ ...(pm === "bun"
75
73
  ? {
76
- dev: 'vitnode init --api && bun run --hot src/index.ts',
77
- start: 'NODE_ENV=production bun run src/index.ts',
74
+ dev: "vitnode init --api && bun run --hot src/index.ts",
75
+ start: "NODE_ENV=production bun run src/index.ts",
78
76
  }
79
77
  : {
80
- dev: 'vitnode init --api && tsx watch src/index.ts',
81
- build: 'tsc && tsc-alias -p tsconfig.json',
82
- start: 'node dist/index.js',
78
+ dev: "vitnode init --api && tsx watch src/index.ts",
79
+ build: "tsc && tsc-alias -p tsconfig.json",
80
+ start: "node dist/index.js",
83
81
  }),
84
- 'dev:email': 'email dev --dir src/emails',
85
- ...withIf(eslint, eslintScripts),
86
- ...withIf(docker && onlyApi, { 'docker:dev': dockerDevScript(appName) }),
87
- 'drizzle-kit': 'drizzle-kit',
82
+ "dev:email": "email dev --dir src/emails",
83
+ ...withIf(biome, biomeScripts),
84
+ ...withIf(docker && onlyApi, { "docker:dev": dockerDevScript(appName) }),
85
+ "drizzle-kit": "drizzle-kit",
88
86
  });
89
- const singleAppScripts = (eslint, docker, appName) => ({
90
- 'db:push': 'vitnode push',
91
- 'db:migrate': 'vitnode migrate',
92
- init: 'vitnode init',
93
- dev: 'vitnode init && next dev --turbopack',
94
- 'dev:email': 'email dev --dir src/emails',
95
- build: 'next build',
96
- start: 'next start',
97
- ...withIf(eslint, eslintScripts),
98
- ...withIf(docker, { 'docker:dev': dockerDevScript(appName) }),
99
- 'drizzle-kit': 'drizzle-kit',
87
+ const singleAppScripts = (biome, docker, appName) => ({
88
+ "db:push": "vitnode push",
89
+ "db:migrate": "vitnode migrate",
90
+ init: "vitnode init",
91
+ dev: "vitnode init && next dev --turbopack",
92
+ "dev:email": "email dev --dir src/emails",
93
+ build: "next build",
94
+ start: "next start",
95
+ ...withIf(biome, biomeScripts),
96
+ ...withIf(docker, { "docker:dev": dockerDevScript(appName) }),
97
+ "drizzle-kit": "drizzle-kit",
100
98
  });
101
- const webScripts = (eslint) => ({
102
- init: 'vitnode init --web',
103
- dev: 'vitnode init --web && next dev --turbopack',
104
- build: 'next build',
105
- start: 'next start',
106
- ...withIf(eslint, eslintScripts),
99
+ const webScripts = (biome) => ({
100
+ init: "vitnode init --web",
101
+ dev: "vitnode init --web && next dev --turbopack",
102
+ build: "next build",
103
+ start: "next start",
104
+ ...withIf(biome, biomeScripts),
107
105
  });
108
- const baseDevDeps = (eslint, includePrettier) => ({
109
- '@types/node': versions.typesNode,
110
- '@vitnode/eslint-config': '',
111
- ...withIf(eslint, {
112
- eslint: versions.eslint,
113
- ...withIf(includePrettier, {
114
- prettier: versions.prettier,
115
- 'prettier-plugin-tailwindcss': versions.prettierTailwind,
116
- }),
106
+ const baseDevDeps = (biome) => ({
107
+ "@types/node": versions.typesNode,
108
+ "@vitnode/config": "",
109
+ ...withIf(biome, {
110
+ "@biomejs/biome": versions.biome,
117
111
  }),
118
112
  });
119
- const rootDevDeps = (eslint) => ({
120
- ...baseDevDeps(eslint, true),
113
+ const rootDevDeps = (biome) => ({
114
+ ...baseDevDeps(biome),
121
115
  turbo: versions.turbo,
122
116
  typescript: versions.typescript,
123
117
  zod: versions.zod,
124
118
  });
125
119
  const apiDeps = {
126
- '@hono/zod-openapi': versions.honoZodOpenapi,
127
- '@hono/zod-validator': versions.honoZodValidator,
128
- '@react-email/components': versions.reactEmailComponents,
129
- '@vitnode/core': '',
130
- 'drizzle-kit': versions.drizzleKitApi,
131
- 'drizzle-orm': versions.drizzleOrm,
120
+ "@hono/zod-openapi": versions.honoZodOpenapi,
121
+ "@hono/zod-validator": versions.honoZodValidator,
122
+ "@react-email/components": versions.reactEmailComponents,
123
+ "@vitnode/core": "",
124
+ "drizzle-kit": versions.drizzleKitApi,
125
+ "drizzle-orm": versions.drizzleOrm,
132
126
  hono: versions.hono,
133
- 'next-intl': versions.nextIntl,
127
+ "next-intl": versions.nextIntl,
134
128
  react: versions.react,
135
- 'react-dom': versions.reactDom,
136
- 'use-intl': versions.useIntl,
129
+ "react-dom": versions.reactDom,
130
+ "use-intl": versions.useIntl,
137
131
  zod: versions.zod,
138
132
  };
139
- const apiDevDeps = (pm, eslint) => ({
140
- '@hono/node-server': '^1.19.0',
141
- ...(pm === 'bun' ? { '@types/bun': versions.typesBun } : {}),
142
- '@types/node': versions.typesNode,
143
- '@types/react': versions.typesReact,
144
- '@types/react-dom': versions.typesReactDom,
145
- '@vitnode/eslint-config': '',
133
+ const apiDevDeps = (pm, biome) => ({
134
+ "@hono/node-server": "^1.19.0",
135
+ ...(pm === "bun" ? { "@types/bun": versions.typesBun } : {}),
136
+ "@types/node": versions.typesNode,
137
+ "@types/react": versions.typesReact,
138
+ "@types/react-dom": versions.typesReactDom,
139
+ "@vitnode/config": "",
146
140
  dotenv: versions.dotenv,
147
- ...withIf(eslint, {
148
- eslint: versions.eslint,
141
+ ...withIf(biome, {
142
+ "@biomejs/biome": versions.biome,
149
143
  }),
150
- 'react-email': versions.reactEmail,
151
- 'tsc-alias': versions.tscAlias,
144
+ "react-email": versions.reactEmail,
145
+ "tsc-alias": versions.tscAlias,
152
146
  tsx: versions.tsx,
153
147
  typescript: versions.typescript,
154
148
  });
155
149
  const singleAppDeps = {
156
- '@hono/zod-openapi': versions.honoZodOpenapi,
157
- '@hono/zod-validator': versions.honoZodValidator,
158
- '@hookform/resolvers': versions.rhfResolvers,
159
- '@react-email/components': versions.reactEmailComponents,
160
- '@vitnode/core': '',
161
- 'babel-plugin-react-compiler': versions.babelReactCompiler,
162
- 'drizzle-kit': versions.drizzleKitSingle,
163
- 'drizzle-orm': versions.drizzleOrm,
150
+ "@hono/zod-openapi": versions.honoZodOpenapi,
151
+ "@hono/zod-validator": versions.honoZodValidator,
152
+ "@hookform/resolvers": versions.rhfResolvers,
153
+ "@react-email/components": versions.reactEmailComponents,
154
+ "@vitnode/core": "",
155
+ "babel-plugin-react-compiler": versions.babelReactCompiler,
156
+ "drizzle-kit": versions.drizzleKitSingle,
157
+ "drizzle-orm": versions.drizzleOrm,
164
158
  hono: versions.hono,
165
- 'lucide-react': versions.lucide,
159
+ "lucide-react": versions.lucide,
166
160
  next: versions.nextSingle,
167
- 'next-intl': versions.nextIntl,
161
+ "next-intl": versions.nextIntl,
168
162
  react: versions.react,
169
- 'react-dom': versions.reactDom,
170
- 'react-hook-form': versions.rhf,
163
+ "react-dom": versions.reactDom,
164
+ "react-hook-form": versions.rhf,
171
165
  sonner: versions.sonner,
172
- 'use-intl': versions.useIntl,
166
+ "use-intl": versions.useIntl,
173
167
  zod: versions.zod,
174
168
  };
175
- const singleAppDevDeps = (eslint) => ({
176
- '@tailwindcss/postcss': versions.tailwindPostcss,
177
- '@types/node': versions.typesNode,
178
- '@types/react': versions.typesReact,
179
- '@types/react-dom': versions.typesReactDom,
180
- '@vitnode/eslint-config': '',
181
- ...withIf(eslint, {
182
- eslint: versions.eslint,
183
- prettier: versions.prettier,
184
- 'prettier-plugin-tailwindcss': versions.prettierTailwind,
169
+ const singleAppDevDeps = (biome) => ({
170
+ "@tailwindcss/postcss": versions.tailwindPostcss,
171
+ "@types/node": versions.typesNode,
172
+ "@types/react": versions.typesReact,
173
+ "@types/react-dom": versions.typesReactDom,
174
+ "@vitnode/config": "",
175
+ ...withIf(biome, {
176
+ "@biomejs/biome": versions.biome,
185
177
  }),
186
- 'react-email': versions.reactEmail,
178
+ "react-email": versions.reactEmail,
187
179
  turbo: versions.turbo,
188
180
  tailwindcss: versions.tailwind,
189
- 'tw-animate-css': versions.twAnimateCssSingle,
181
+ "tw-animate-css": versions.twAnimateCssSingle,
190
182
  typescript: versions.typescript,
191
183
  });
192
184
  const webDeps = {
193
- '@vitnode/core': '',
194
- 'babel-plugin-react-compiler': versions.babelReactCompiler,
195
- 'lucide-react': versions.lucide,
185
+ "@vitnode/core": "",
186
+ "babel-plugin-react-compiler": versions.babelReactCompiler,
187
+ "lucide-react": versions.lucide,
196
188
  next: versions.nextWebInMonorepo,
197
- 'next-intl': versions.nextIntl,
189
+ "next-intl": versions.nextIntl,
198
190
  react: versions.react,
199
- 'react-dom': versions.reactDom,
200
- 'react-hook-form': versions.rhf,
191
+ "react-dom": versions.reactDom,
192
+ "react-hook-form": versions.rhf,
201
193
  sonner: versions.sonner,
202
194
  };
203
- const webDevDeps = (eslint) => ({
204
- '@hookform/resolvers': versions.rhfResolvers,
205
- '@tailwindcss/postcss': versions.tailwindPostcss,
206
- '@types/mdx': versions.typesMdx,
207
- '@types/node': versions.typesNode,
208
- '@types/react': versions.typesReact,
209
- '@types/react-dom': versions.typesReactDom,
210
- '@vitnode/eslint-config': '',
211
- 'class-variance-authority': versions.cva,
212
- ...withIf(eslint, { eslint: versions.eslint }),
195
+ const webDevDeps = (biome) => ({
196
+ "@hookform/resolvers": versions.rhfResolvers,
197
+ "@tailwindcss/postcss": versions.tailwindPostcss,
198
+ "@types/mdx": versions.typesMdx,
199
+ "@types/node": versions.typesNode,
200
+ "@types/react": versions.typesReact,
201
+ "@types/react-dom": versions.typesReactDom,
202
+ "@vitnode/config": "",
203
+ "class-variance-authority": versions.cva,
204
+ ...withIf(biome, { "@biomejs/biome": versions.biome }),
213
205
  postcss: versions.postcss,
214
206
  tailwindcss: versions.tailwind,
215
- 'tw-animate-css': versions.twAnimateCssWeb,
207
+ "tw-animate-css": versions.twAnimateCssWeb,
216
208
  typescript: versions.typescript,
217
209
  zod: versions.zod,
218
210
  });
219
- export const createPackageJSON = async ({ appName, packageManager, root, eslint, docker, mode, monorepo, }) => {
220
- const cliPkg = JSON.parse(await readFile(join(__dirname, '..', '..', '..', 'package.json'), 'utf-8'));
211
+ export const createPackageJSON = async ({ appName, packageManager, root, biome, docker, mode, monorepo, }) => {
212
+ const cliPkg = JSON.parse(await readFile(join(__dirname, "..", "..", "..", "package.json"), "utf-8"));
221
213
  const vitnodeVersionRange = `^${cliPkg.version}`;
222
214
  const pmVersions = await getAvailablePackageManagers();
223
215
  const pmSpec = `${packageManager}@${pmVersions[packageManager]}`;
224
216
  const p = paths(root);
225
- const isApiMonorepo = mode === 'apiMonorepo' || !!monorepo;
226
- const isOnlyApi = mode === 'onlyApi';
227
- const isSingleApp = mode === 'singleApp';
217
+ const isApiMonorepo = mode === "apiMonorepo" || !!monorepo;
218
+ const isOnlyApi = mode === "onlyApi";
219
+ const isSingleApp = mode === "singleApp";
228
220
  if (isApiMonorepo) {
229
221
  const rootPkg = {
230
222
  name: appName,
231
223
  private: true,
232
- scripts: rootScripts(eslint, !!docker, appName),
224
+ scripts: rootScripts(biome, !!docker, appName),
233
225
  devDependencies: {
234
- ...rootDevDeps(eslint),
235
- '@vitnode/eslint-config': vitnodeVersionRange,
226
+ ...rootDevDeps(biome),
227
+ "@vitnode/config": vitnodeVersionRange,
236
228
  },
237
229
  packageManager: pmSpec,
238
- workspaces: ['apps/*', 'plugins/*'],
230
+ workspaces: ["apps/*", "plugins/*"],
239
231
  };
240
- await writeJson(join(p.root, 'package.json'), rootPkg);
232
+ await writeJson(join(p.root, "package.json"), rootPkg);
241
233
  }
242
234
  const apiPkg = {
243
- name: isApiMonorepo ? 'api' : appName,
244
- version: '0.1.0',
235
+ name: isApiMonorepo ? "api" : appName,
236
+ version: "0.1.0",
245
237
  private: true,
246
- type: 'module',
247
- scripts: apiScripts(packageManager, eslint, !!docker, mode === 'onlyApi', appName),
238
+ type: "module",
239
+ scripts: apiScripts(packageManager, biome, !!docker, mode === "onlyApi", appName),
248
240
  dependencies: {
249
241
  ...apiDeps,
250
- '@vitnode/core': vitnodeVersionRange,
242
+ "@vitnode/core": vitnodeVersionRange,
251
243
  },
252
244
  devDependencies: {
253
- ...apiDevDeps(packageManager, eslint),
254
- '@vitnode/eslint-config': vitnodeVersionRange,
255
- ...(eslint && mode === 'onlyApi'
245
+ ...apiDevDeps(packageManager, biome),
246
+ "@vitnode/config": vitnodeVersionRange,
247
+ ...(biome && mode === "onlyApi"
256
248
  ? {
257
- prettier: versions.prettier,
258
- 'prettier-plugin-tailwindcss': versions.prettierTailwind,
249
+ "@biomejs/biome": versions.biome,
259
250
  }
260
251
  : {}),
261
- ...(packageManager === 'bun' ? {} : {}),
252
+ ...(packageManager === "bun" ? {} : {}),
262
253
  },
263
254
  };
264
255
  if (isSingleApp) {
265
256
  const singlePkg = {
266
- name: monorepo ? 'web' : appName,
267
- version: '0.1.0',
257
+ name: monorepo ? "web" : appName,
258
+ version: "0.1.0",
268
259
  private: true,
269
- type: 'module',
270
- scripts: singleAppScripts(eslint, !!docker, appName),
260
+ type: "module",
261
+ scripts: singleAppScripts(biome, !!docker, appName),
271
262
  dependencies: {
272
263
  ...singleAppDeps,
273
- '@vitnode/core': vitnodeVersionRange,
264
+ "@vitnode/core": vitnodeVersionRange,
274
265
  },
275
266
  devDependencies: {
276
- ...singleAppDevDeps(eslint),
277
- '@vitnode/eslint-config': vitnodeVersionRange,
267
+ ...singleAppDevDeps(biome),
268
+ "@vitnode/config": vitnodeVersionRange,
278
269
  },
279
270
  packageManager: pmSpec,
280
271
  };
281
- await writeJson(join(monorepo ? p.web : p.root, 'package.json'), singlePkg);
272
+ await writeJson(join(monorepo ? p.web : p.root, "package.json"), singlePkg);
282
273
  }
283
- if (mode === 'apiMonorepo') {
284
- await writeJson(join(p.api, 'package.json'), apiPkg);
274
+ if (mode === "apiMonorepo") {
275
+ await writeJson(join(p.api, "package.json"), apiPkg);
285
276
  const webPkg = {
286
- name: 'web',
287
- version: '0.1.0',
277
+ name: "web",
278
+ version: "0.1.0",
288
279
  private: true,
289
- type: 'module',
290
- scripts: webScripts(eslint),
280
+ type: "module",
281
+ scripts: webScripts(biome),
291
282
  dependencies: {
292
283
  ...webDeps,
293
- '@vitnode/core': vitnodeVersionRange,
284
+ "@vitnode/core": vitnodeVersionRange,
294
285
  },
295
286
  devDependencies: {
296
- ...webDevDeps(eslint),
297
- '@vitnode/eslint-config': vitnodeVersionRange,
287
+ ...webDevDeps(biome),
288
+ "@vitnode/config": vitnodeVersionRange,
298
289
  },
299
290
  };
300
- await writeJson(join(p.web, 'package.json'), webPkg);
291
+ await writeJson(join(p.web, "package.json"), webPkg);
301
292
  }
302
293
  if (isOnlyApi) {
303
- await writeJson(join(monorepo ? p.api : p.root, 'package.json'), apiPkg);
294
+ await writeJson(join(monorepo ? p.api : p.root, "package.json"), apiPkg);
304
295
  }
305
296
  };