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.
- package/README.md +1 -1
- package/copy-of-vitnode-app/.vscode/settings.json +29 -0
- package/copy-of-vitnode-app/api/drizzle.config.ts +4 -4
- package/copy-of-vitnode-app/api/src/index.ts +7 -7
- package/copy-of-vitnode-app/api/src/vitnode.api.config.ts +8 -9
- package/copy-of-vitnode-app/api/tsconfig.json +1 -1
- package/copy-of-vitnode-app/api-bun/src/index.ts +4 -4
- package/copy-of-vitnode-app/api-single-app/drizzle.config.ts +4 -4
- package/copy-of-vitnode-app/api-single-app/src/app/api/[...route]/route.ts +5 -5
- package/copy-of-vitnode-app/api-single-app/src/vitnode.api.config.ts +6 -7
- package/copy-of-vitnode-app/biome/biome.json +5 -0
- package/copy-of-vitnode-app/monorepo/turbo.json +0 -6
- package/copy-of-vitnode-app/root/global.d.ts +2 -2
- package/copy-of-vitnode-app/root/next.config.ts +2 -2
- package/copy-of-vitnode-app/root/postcss.config.mjs +1 -1
- package/copy-of-vitnode-app/root/src/app/[locale]/(main)/[...rest]/page.tsx +1 -1
- package/copy-of-vitnode-app/root/src/app/[locale]/(main)/layout.tsx +3 -3
- package/copy-of-vitnode-app/root/src/app/[locale]/(main)/not-found.tsx +1 -1
- package/copy-of-vitnode-app/root/src/app/[locale]/(main)/page.tsx +11 -10
- package/copy-of-vitnode-app/root/src/app/[locale]/admin/(auth)/layout.tsx +2 -2
- package/copy-of-vitnode-app/root/src/app/[locale]/admin/page.tsx +1 -1
- package/copy-of-vitnode-app/root/src/app/[locale]/layout.tsx +9 -10
- package/copy-of-vitnode-app/root/src/app/global-error.tsx +8 -11
- package/copy-of-vitnode-app/root/src/app/global.css +3 -2
- package/copy-of-vitnode-app/root/src/app/layout.tsx +2 -2
- package/copy-of-vitnode-app/root/src/middleware.ts +5 -5
- package/copy-of-vitnode-app/root/src/vitnode.config.ts +8 -8
- package/copy-of-vitnode-app/root/tsconfig.json +1 -1
- package/dist/src/create/create-package-json.js +192 -201
- package/dist/src/create/create-vitnode.js +73 -73
- package/dist/src/helpers/get-available-package-managers.js +6 -6
- package/dist/src/helpers/get-package-json.js +2 -2
- package/dist/src/helpers/init-vitnode.js +7 -7
- package/dist/src/helpers/install-dependencies.js +35 -32
- package/dist/src/helpers/is-folder-empty.js +25 -26
- package/dist/src/helpers/is-online.js +16 -16
- package/dist/src/helpers/is-writeable.js +2 -2
- package/dist/src/helpers/validate-pkg.js +1 -1
- package/dist/src/index.js +28 -28
- package/dist/src/plugin/index.js +5 -5
- package/dist/src/prepare/prepare.js +5 -5
- package/dist/src/questions.js +29 -30
- package/dist/src/validation.js +15 -15
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -6
- package/copy-of-vitnode-app/eslint/.prettierrc.mjs +0 -11
- package/copy-of-vitnode-app/eslint/eslint.config.mjs +0 -17
|
@@ -1,305 +1,296 @@
|
|
|
1
|
-
import { readFile, writeFile } from
|
|
2
|
-
import { dirname, join } from
|
|
3
|
-
import { fileURLToPath } from
|
|
4
|
-
import { getAvailablePackageManagers } from
|
|
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,
|
|
11
|
-
web: join(root,
|
|
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:
|
|
16
|
-
typesReact:
|
|
17
|
-
typesReactDom:
|
|
18
|
-
typesMdx:
|
|
19
|
-
typesBun:
|
|
20
|
-
turbo:
|
|
21
|
-
typescript:
|
|
22
|
-
tsx:
|
|
23
|
-
tscAlias:
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
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
|
|
56
|
-
lint:
|
|
57
|
-
|
|
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 = (
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
init:
|
|
64
|
-
dev:
|
|
65
|
-
build:
|
|
66
|
-
start:
|
|
67
|
-
...withIf(
|
|
68
|
-
...withIf(enableDocker, {
|
|
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,
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
init:
|
|
74
|
-
...(pm ===
|
|
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:
|
|
77
|
-
start:
|
|
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:
|
|
81
|
-
build:
|
|
82
|
-
start:
|
|
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
|
-
|
|
85
|
-
...withIf(
|
|
86
|
-
...withIf(docker && onlyApi, {
|
|
87
|
-
|
|
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 = (
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
init:
|
|
93
|
-
dev:
|
|
94
|
-
|
|
95
|
-
build:
|
|
96
|
-
start:
|
|
97
|
-
...withIf(
|
|
98
|
-
...withIf(docker, {
|
|
99
|
-
|
|
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 = (
|
|
102
|
-
init:
|
|
103
|
-
dev:
|
|
104
|
-
build:
|
|
105
|
-
start:
|
|
106
|
-
...withIf(
|
|
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 = (
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
...withIf(
|
|
112
|
-
|
|
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 = (
|
|
120
|
-
...baseDevDeps(
|
|
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
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
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
|
-
|
|
127
|
+
"next-intl": versions.nextIntl,
|
|
134
128
|
react: versions.react,
|
|
135
|
-
|
|
136
|
-
|
|
129
|
+
"react-dom": versions.reactDom,
|
|
130
|
+
"use-intl": versions.useIntl,
|
|
137
131
|
zod: versions.zod,
|
|
138
132
|
};
|
|
139
|
-
const apiDevDeps = (pm,
|
|
140
|
-
|
|
141
|
-
...(pm ===
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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(
|
|
148
|
-
|
|
141
|
+
...withIf(biome, {
|
|
142
|
+
"@biomejs/biome": versions.biome,
|
|
149
143
|
}),
|
|
150
|
-
|
|
151
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
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
|
-
|
|
159
|
+
"lucide-react": versions.lucide,
|
|
166
160
|
next: versions.nextSingle,
|
|
167
|
-
|
|
161
|
+
"next-intl": versions.nextIntl,
|
|
168
162
|
react: versions.react,
|
|
169
|
-
|
|
170
|
-
|
|
163
|
+
"react-dom": versions.reactDom,
|
|
164
|
+
"react-hook-form": versions.rhf,
|
|
171
165
|
sonner: versions.sonner,
|
|
172
|
-
|
|
166
|
+
"use-intl": versions.useIntl,
|
|
173
167
|
zod: versions.zod,
|
|
174
168
|
};
|
|
175
|
-
const singleAppDevDeps = (
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
...withIf(
|
|
182
|
-
|
|
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
|
-
|
|
178
|
+
"react-email": versions.reactEmail,
|
|
187
179
|
turbo: versions.turbo,
|
|
188
180
|
tailwindcss: versions.tailwind,
|
|
189
|
-
|
|
181
|
+
"tw-animate-css": versions.twAnimateCssSingle,
|
|
190
182
|
typescript: versions.typescript,
|
|
191
183
|
});
|
|
192
184
|
const webDeps = {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
185
|
+
"@vitnode/core": "",
|
|
186
|
+
"babel-plugin-react-compiler": versions.babelReactCompiler,
|
|
187
|
+
"lucide-react": versions.lucide,
|
|
196
188
|
next: versions.nextWebInMonorepo,
|
|
197
|
-
|
|
189
|
+
"next-intl": versions.nextIntl,
|
|
198
190
|
react: versions.react,
|
|
199
|
-
|
|
200
|
-
|
|
191
|
+
"react-dom": versions.reactDom,
|
|
192
|
+
"react-hook-form": versions.rhf,
|
|
201
193
|
sonner: versions.sonner,
|
|
202
194
|
};
|
|
203
|
-
const webDevDeps = (
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
...withIf(
|
|
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
|
-
|
|
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,
|
|
220
|
-
const cliPkg = JSON.parse(await readFile(join(__dirname,
|
|
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 ===
|
|
226
|
-
const isOnlyApi = mode ===
|
|
227
|
-
const isSingleApp = mode ===
|
|
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(
|
|
224
|
+
scripts: rootScripts(biome, !!docker, appName),
|
|
233
225
|
devDependencies: {
|
|
234
|
-
...rootDevDeps(
|
|
235
|
-
|
|
226
|
+
...rootDevDeps(biome),
|
|
227
|
+
"@vitnode/config": vitnodeVersionRange,
|
|
236
228
|
},
|
|
237
229
|
packageManager: pmSpec,
|
|
238
|
-
workspaces: [
|
|
230
|
+
workspaces: ["apps/*", "plugins/*"],
|
|
239
231
|
};
|
|
240
|
-
await writeJson(join(p.root,
|
|
232
|
+
await writeJson(join(p.root, "package.json"), rootPkg);
|
|
241
233
|
}
|
|
242
234
|
const apiPkg = {
|
|
243
|
-
name: isApiMonorepo ?
|
|
244
|
-
version:
|
|
235
|
+
name: isApiMonorepo ? "api" : appName,
|
|
236
|
+
version: "0.1.0",
|
|
245
237
|
private: true,
|
|
246
|
-
type:
|
|
247
|
-
scripts: apiScripts(packageManager,
|
|
238
|
+
type: "module",
|
|
239
|
+
scripts: apiScripts(packageManager, biome, !!docker, mode === "onlyApi", appName),
|
|
248
240
|
dependencies: {
|
|
249
241
|
...apiDeps,
|
|
250
|
-
|
|
242
|
+
"@vitnode/core": vitnodeVersionRange,
|
|
251
243
|
},
|
|
252
244
|
devDependencies: {
|
|
253
|
-
...apiDevDeps(packageManager,
|
|
254
|
-
|
|
255
|
-
...(
|
|
245
|
+
...apiDevDeps(packageManager, biome),
|
|
246
|
+
"@vitnode/config": vitnodeVersionRange,
|
|
247
|
+
...(biome && mode === "onlyApi"
|
|
256
248
|
? {
|
|
257
|
-
|
|
258
|
-
'prettier-plugin-tailwindcss': versions.prettierTailwind,
|
|
249
|
+
"@biomejs/biome": versions.biome,
|
|
259
250
|
}
|
|
260
251
|
: {}),
|
|
261
|
-
...(packageManager ===
|
|
252
|
+
...(packageManager === "bun" ? {} : {}),
|
|
262
253
|
},
|
|
263
254
|
};
|
|
264
255
|
if (isSingleApp) {
|
|
265
256
|
const singlePkg = {
|
|
266
|
-
name: monorepo ?
|
|
267
|
-
version:
|
|
257
|
+
name: monorepo ? "web" : appName,
|
|
258
|
+
version: "0.1.0",
|
|
268
259
|
private: true,
|
|
269
|
-
type:
|
|
270
|
-
scripts: singleAppScripts(
|
|
260
|
+
type: "module",
|
|
261
|
+
scripts: singleAppScripts(biome, !!docker, appName),
|
|
271
262
|
dependencies: {
|
|
272
263
|
...singleAppDeps,
|
|
273
|
-
|
|
264
|
+
"@vitnode/core": vitnodeVersionRange,
|
|
274
265
|
},
|
|
275
266
|
devDependencies: {
|
|
276
|
-
...singleAppDevDeps(
|
|
277
|
-
|
|
267
|
+
...singleAppDevDeps(biome),
|
|
268
|
+
"@vitnode/config": vitnodeVersionRange,
|
|
278
269
|
},
|
|
279
270
|
packageManager: pmSpec,
|
|
280
271
|
};
|
|
281
|
-
await writeJson(join(monorepo ? p.web : p.root,
|
|
272
|
+
await writeJson(join(monorepo ? p.web : p.root, "package.json"), singlePkg);
|
|
282
273
|
}
|
|
283
|
-
if (mode ===
|
|
284
|
-
await writeJson(join(p.api,
|
|
274
|
+
if (mode === "apiMonorepo") {
|
|
275
|
+
await writeJson(join(p.api, "package.json"), apiPkg);
|
|
285
276
|
const webPkg = {
|
|
286
|
-
name:
|
|
287
|
-
version:
|
|
277
|
+
name: "web",
|
|
278
|
+
version: "0.1.0",
|
|
288
279
|
private: true,
|
|
289
|
-
type:
|
|
290
|
-
scripts: webScripts(
|
|
280
|
+
type: "module",
|
|
281
|
+
scripts: webScripts(biome),
|
|
291
282
|
dependencies: {
|
|
292
283
|
...webDeps,
|
|
293
|
-
|
|
284
|
+
"@vitnode/core": vitnodeVersionRange,
|
|
294
285
|
},
|
|
295
286
|
devDependencies: {
|
|
296
|
-
...webDevDeps(
|
|
297
|
-
|
|
287
|
+
...webDevDeps(biome),
|
|
288
|
+
"@vitnode/config": vitnodeVersionRange,
|
|
298
289
|
},
|
|
299
290
|
};
|
|
300
|
-
await writeJson(join(p.web,
|
|
291
|
+
await writeJson(join(p.web, "package.json"), webPkg);
|
|
301
292
|
}
|
|
302
293
|
if (isOnlyApi) {
|
|
303
|
-
await writeJson(join(monorepo ? p.api : p.root,
|
|
294
|
+
await writeJson(join(monorepo ? p.api : p.root, "package.json"), apiPkg);
|
|
304
295
|
}
|
|
305
296
|
};
|