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

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 -13
  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 +4 -3
  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 +189 -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 +5 -8
  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,293 @@
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.5",
23
+ tscAlias: "^1.8.16",
24
+ biome: "^2.2.3",
25
+ tailwind: "^4.1.12",
26
+ tailwindPostcss: "^4.1.13",
27
+ postcss: "^8.5.6",
28
+ twAnimateCssWeb: "^1.3.7",
29
+ twAnimateCssSingle: "^1.3.8",
30
+ react: "^19.1",
31
+ reactDom: "^19.1",
32
+ nextSingle: "^15.5.2",
33
+ nextWebInMonorepo: "^15.4.6",
34
+ nextIntl: "^4.3.6",
35
+ useIntl: "^4.3.6",
36
+ rhf: "^7.62.0",
37
+ rhfResolvers: "^5.1.1",
38
+ lucide: "^0.542.0",
39
+ sonner: "^2.0.7",
40
+ dotenv: "^17.2.2",
41
+ drizzleKitSingle: "^0.31.4",
42
+ drizzleKitApi: "^0.31.3",
43
+ drizzleOrm: "^0.44.5",
44
+ hono: "^4.9.6",
45
+ honoZodOpenapi: "^1.1.0",
46
+ honoZodValidator: "^0.7.2",
47
+ reactEmail: "^4.2.8",
48
+ reactEmailComponents: "^0.5.2",
49
+ zod: "^4.1.5",
50
+ babelReactCompiler: "^19.1.0-rc.3",
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
+ init: "turbo init",
61
+ dev: "turbo dev",
62
+ build: "turbo build",
63
+ start: "turbo start",
64
+ ...withIf(enableBiome, biomeScripts),
65
+ ...withIf(enableDocker, { "docker:dev": dockerDevScript(appName) }),
69
66
  });
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'
67
+ const apiScripts = (pm, biome, docker, onlyApi, appName) => ({
68
+ "db:migrate": "vitnode migrate",
69
+ init: "vitnode init --api",
70
+ ...(pm === "bun"
75
71
  ? {
76
- dev: 'vitnode init --api && bun run --hot src/index.ts',
77
- start: 'NODE_ENV=production bun run src/index.ts',
72
+ dev: "vitnode init --api && bun run --hot src/index.ts",
73
+ start: "NODE_ENV=production bun run src/index.ts",
78
74
  }
79
75
  : {
80
- dev: 'vitnode init --api && tsx watch src/index.ts',
81
- build: 'tsc && tsc-alias -p tsconfig.json',
82
- start: 'node dist/index.js',
76
+ dev: "vitnode init --api && tsx watch src/index.ts",
77
+ build: "tsc && tsc-alias -p tsconfig.json",
78
+ start: "node dist/index.js",
83
79
  }),
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',
80
+ "dev:email": "email dev --dir src/emails",
81
+ ...withIf(biome, biomeScripts),
82
+ ...withIf(docker && onlyApi, { "docker:dev": dockerDevScript(appName) }),
83
+ "drizzle-kit": "drizzle-kit",
88
84
  });
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',
85
+ const singleAppScripts = (biome, docker, appName) => ({
86
+ "db:migrate": "vitnode migrate",
87
+ init: "vitnode init",
88
+ dev: "vitnode init && next dev --turbopack",
89
+ "dev:email": "email dev --dir src/emails",
90
+ build: "next build",
91
+ start: "next start",
92
+ ...withIf(biome, biomeScripts),
93
+ ...withIf(docker, { "docker:dev": dockerDevScript(appName) }),
94
+ "drizzle-kit": "drizzle-kit",
100
95
  });
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),
96
+ const webScripts = (biome) => ({
97
+ init: "vitnode init --web",
98
+ dev: "vitnode init --web && next dev --turbopack",
99
+ build: "next build",
100
+ start: "next start",
101
+ ...withIf(biome, biomeScripts),
107
102
  });
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
- }),
103
+ const baseDevDeps = (biome) => ({
104
+ "@types/node": versions.typesNode,
105
+ "@vitnode/config": "",
106
+ ...withIf(biome, {
107
+ "@biomejs/biome": versions.biome,
117
108
  }),
118
109
  });
119
- const rootDevDeps = (eslint) => ({
120
- ...baseDevDeps(eslint, true),
110
+ const rootDevDeps = (biome) => ({
111
+ ...baseDevDeps(biome),
121
112
  turbo: versions.turbo,
122
113
  typescript: versions.typescript,
123
114
  zod: versions.zod,
124
115
  });
125
116
  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,
117
+ "@hono/zod-openapi": versions.honoZodOpenapi,
118
+ "@hono/zod-validator": versions.honoZodValidator,
119
+ "@react-email/components": versions.reactEmailComponents,
120
+ "@vitnode/core": "",
121
+ "drizzle-kit": versions.drizzleKitApi,
122
+ "drizzle-orm": versions.drizzleOrm,
132
123
  hono: versions.hono,
133
- 'next-intl': versions.nextIntl,
124
+ "next-intl": versions.nextIntl,
134
125
  react: versions.react,
135
- 'react-dom': versions.reactDom,
136
- 'use-intl': versions.useIntl,
126
+ "react-dom": versions.reactDom,
127
+ "use-intl": versions.useIntl,
137
128
  zod: versions.zod,
138
129
  };
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': '',
130
+ const apiDevDeps = (pm, biome) => ({
131
+ "@hono/node-server": "^1.19.1",
132
+ ...(pm === "bun" ? { "@types/bun": versions.typesBun } : {}),
133
+ "@types/node": versions.typesNode,
134
+ "@types/react": versions.typesReact,
135
+ "@types/react-dom": versions.typesReactDom,
136
+ "@vitnode/config": "",
146
137
  dotenv: versions.dotenv,
147
- ...withIf(eslint, {
148
- eslint: versions.eslint,
138
+ ...withIf(biome, {
139
+ "@biomejs/biome": versions.biome,
149
140
  }),
150
- 'react-email': versions.reactEmail,
151
- 'tsc-alias': versions.tscAlias,
141
+ "react-email": versions.reactEmail,
142
+ "tsc-alias": versions.tscAlias,
152
143
  tsx: versions.tsx,
153
144
  typescript: versions.typescript,
154
145
  });
155
146
  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,
147
+ "@hono/zod-openapi": versions.honoZodOpenapi,
148
+ "@hono/zod-validator": versions.honoZodValidator,
149
+ "@hookform/resolvers": versions.rhfResolvers,
150
+ "@react-email/components": versions.reactEmailComponents,
151
+ "@vitnode/core": "",
152
+ "babel-plugin-react-compiler": versions.babelReactCompiler,
153
+ "drizzle-kit": versions.drizzleKitSingle,
154
+ "drizzle-orm": versions.drizzleOrm,
164
155
  hono: versions.hono,
165
- 'lucide-react': versions.lucide,
156
+ "lucide-react": versions.lucide,
166
157
  next: versions.nextSingle,
167
- 'next-intl': versions.nextIntl,
158
+ "next-intl": versions.nextIntl,
168
159
  react: versions.react,
169
- 'react-dom': versions.reactDom,
170
- 'react-hook-form': versions.rhf,
160
+ "react-dom": versions.reactDom,
161
+ "react-hook-form": versions.rhf,
171
162
  sonner: versions.sonner,
172
- 'use-intl': versions.useIntl,
163
+ "use-intl": versions.useIntl,
173
164
  zod: versions.zod,
174
165
  };
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,
166
+ const singleAppDevDeps = (biome) => ({
167
+ "@tailwindcss/postcss": versions.tailwindPostcss,
168
+ "@types/node": versions.typesNode,
169
+ "@types/react": versions.typesReact,
170
+ "@types/react-dom": versions.typesReactDom,
171
+ "@vitnode/config": "",
172
+ ...withIf(biome, {
173
+ "@biomejs/biome": versions.biome,
185
174
  }),
186
- 'react-email': versions.reactEmail,
175
+ "react-email": versions.reactEmail,
187
176
  turbo: versions.turbo,
188
177
  tailwindcss: versions.tailwind,
189
- 'tw-animate-css': versions.twAnimateCssSingle,
178
+ "tw-animate-css": versions.twAnimateCssSingle,
190
179
  typescript: versions.typescript,
191
180
  });
192
181
  const webDeps = {
193
- '@vitnode/core': '',
194
- 'babel-plugin-react-compiler': versions.babelReactCompiler,
195
- 'lucide-react': versions.lucide,
182
+ "@vitnode/core": "",
183
+ "babel-plugin-react-compiler": versions.babelReactCompiler,
184
+ "lucide-react": versions.lucide,
196
185
  next: versions.nextWebInMonorepo,
197
- 'next-intl': versions.nextIntl,
186
+ "next-intl": versions.nextIntl,
198
187
  react: versions.react,
199
- 'react-dom': versions.reactDom,
200
- 'react-hook-form': versions.rhf,
188
+ "react-dom": versions.reactDom,
189
+ "react-hook-form": versions.rhf,
201
190
  sonner: versions.sonner,
202
191
  };
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 }),
192
+ const webDevDeps = (biome) => ({
193
+ "@hookform/resolvers": versions.rhfResolvers,
194
+ "@tailwindcss/postcss": versions.tailwindPostcss,
195
+ "@types/mdx": versions.typesMdx,
196
+ "@types/node": versions.typesNode,
197
+ "@types/react": versions.typesReact,
198
+ "@types/react-dom": versions.typesReactDom,
199
+ "@vitnode/config": "",
200
+ "class-variance-authority": versions.cva,
201
+ ...withIf(biome, { "@biomejs/biome": versions.biome }),
213
202
  postcss: versions.postcss,
214
203
  tailwindcss: versions.tailwind,
215
- 'tw-animate-css': versions.twAnimateCssWeb,
204
+ "tw-animate-css": versions.twAnimateCssWeb,
216
205
  typescript: versions.typescript,
217
206
  zod: versions.zod,
218
207
  });
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'));
208
+ export const createPackageJSON = async ({ appName, packageManager, root, biome, docker, mode, monorepo, }) => {
209
+ const cliPkg = JSON.parse(await readFile(join(__dirname, "..", "..", "..", "package.json"), "utf-8"));
221
210
  const vitnodeVersionRange = `^${cliPkg.version}`;
222
211
  const pmVersions = await getAvailablePackageManagers();
223
212
  const pmSpec = `${packageManager}@${pmVersions[packageManager]}`;
224
213
  const p = paths(root);
225
- const isApiMonorepo = mode === 'apiMonorepo' || !!monorepo;
226
- const isOnlyApi = mode === 'onlyApi';
227
- const isSingleApp = mode === 'singleApp';
214
+ const isApiMonorepo = mode === "apiMonorepo" || !!monorepo;
215
+ const isOnlyApi = mode === "onlyApi";
216
+ const isSingleApp = mode === "singleApp";
228
217
  if (isApiMonorepo) {
229
218
  const rootPkg = {
230
219
  name: appName,
231
220
  private: true,
232
- scripts: rootScripts(eslint, !!docker, appName),
221
+ scripts: rootScripts(biome, !!docker, appName),
233
222
  devDependencies: {
234
- ...rootDevDeps(eslint),
235
- '@vitnode/eslint-config': vitnodeVersionRange,
223
+ ...rootDevDeps(biome),
224
+ "@vitnode/config": vitnodeVersionRange,
236
225
  },
237
226
  packageManager: pmSpec,
238
- workspaces: ['apps/*', 'plugins/*'],
227
+ workspaces: ["apps/*", "plugins/*"],
239
228
  };
240
- await writeJson(join(p.root, 'package.json'), rootPkg);
229
+ await writeJson(join(p.root, "package.json"), rootPkg);
241
230
  }
242
231
  const apiPkg = {
243
- name: isApiMonorepo ? 'api' : appName,
244
- version: '0.1.0',
232
+ name: isApiMonorepo ? "api" : appName,
233
+ version: "0.1.0",
245
234
  private: true,
246
- type: 'module',
247
- scripts: apiScripts(packageManager, eslint, !!docker, mode === 'onlyApi', appName),
235
+ type: "module",
236
+ scripts: apiScripts(packageManager, biome, !!docker, mode === "onlyApi", appName),
248
237
  dependencies: {
249
238
  ...apiDeps,
250
- '@vitnode/core': vitnodeVersionRange,
239
+ "@vitnode/core": vitnodeVersionRange,
251
240
  },
252
241
  devDependencies: {
253
- ...apiDevDeps(packageManager, eslint),
254
- '@vitnode/eslint-config': vitnodeVersionRange,
255
- ...(eslint && mode === 'onlyApi'
242
+ ...apiDevDeps(packageManager, biome),
243
+ "@vitnode/config": vitnodeVersionRange,
244
+ ...(biome && mode === "onlyApi"
256
245
  ? {
257
- prettier: versions.prettier,
258
- 'prettier-plugin-tailwindcss': versions.prettierTailwind,
246
+ "@biomejs/biome": versions.biome,
259
247
  }
260
248
  : {}),
261
- ...(packageManager === 'bun' ? {} : {}),
249
+ ...(packageManager === "bun" ? {} : {}),
262
250
  },
263
251
  };
264
252
  if (isSingleApp) {
265
253
  const singlePkg = {
266
- name: monorepo ? 'web' : appName,
267
- version: '0.1.0',
254
+ name: monorepo ? "web" : appName,
255
+ version: "0.1.0",
268
256
  private: true,
269
- type: 'module',
270
- scripts: singleAppScripts(eslint, !!docker, appName),
257
+ type: "module",
258
+ scripts: singleAppScripts(biome, !!docker, appName),
271
259
  dependencies: {
272
260
  ...singleAppDeps,
273
- '@vitnode/core': vitnodeVersionRange,
261
+ "@vitnode/core": vitnodeVersionRange,
274
262
  },
275
263
  devDependencies: {
276
- ...singleAppDevDeps(eslint),
277
- '@vitnode/eslint-config': vitnodeVersionRange,
264
+ ...singleAppDevDeps(biome),
265
+ "@vitnode/config": vitnodeVersionRange,
278
266
  },
279
267
  packageManager: pmSpec,
280
268
  };
281
- await writeJson(join(monorepo ? p.web : p.root, 'package.json'), singlePkg);
269
+ await writeJson(join(monorepo ? p.web : p.root, "package.json"), singlePkg);
282
270
  }
283
- if (mode === 'apiMonorepo') {
284
- await writeJson(join(p.api, 'package.json'), apiPkg);
271
+ if (mode === "apiMonorepo") {
272
+ await writeJson(join(p.api, "package.json"), apiPkg);
285
273
  const webPkg = {
286
- name: 'web',
287
- version: '0.1.0',
274
+ name: "web",
275
+ version: "0.1.0",
288
276
  private: true,
289
- type: 'module',
290
- scripts: webScripts(eslint),
277
+ type: "module",
278
+ scripts: webScripts(biome),
291
279
  dependencies: {
292
280
  ...webDeps,
293
- '@vitnode/core': vitnodeVersionRange,
281
+ "@vitnode/core": vitnodeVersionRange,
294
282
  },
295
283
  devDependencies: {
296
- ...webDevDeps(eslint),
297
- '@vitnode/eslint-config': vitnodeVersionRange,
284
+ ...webDevDeps(biome),
285
+ "@vitnode/config": vitnodeVersionRange,
298
286
  },
299
287
  };
300
- await writeJson(join(p.web, 'package.json'), webPkg);
288
+ await writeJson(join(p.web, "package.json"), webPkg);
301
289
  }
302
290
  if (isOnlyApi) {
303
- await writeJson(join(monorepo ? p.api : p.root, 'package.json'), apiPkg);
291
+ await writeJson(join(monorepo ? p.api : p.root, "package.json"), apiPkg);
304
292
  }
305
293
  };