create-vuetify 2.7.0-beta.3 → 2.7.0
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/dist/index.mjs +302 -56
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,26 +1,19 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { dirname as dirname3, join as
|
|
2
|
+
import { dirname as dirname3, join as join4, resolve as resolve6 } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
-
import { mkdirSync as mkdirSync2, rmSync, writeFileSync as writeFileSync2 } from "node:fs";
|
|
4
|
+
import { mkdirSync as mkdirSync2, rmSync, writeFileSync as writeFileSync2, existsSync as existsSync5 } from "node:fs";
|
|
5
5
|
|
|
6
6
|
// src/utils/prompts.ts
|
|
7
7
|
import { join as join2, resolve as resolve3 } from "node:path";
|
|
8
8
|
import { existsSync as existsSync2, readdirSync } from "node:fs";
|
|
9
9
|
|
|
10
10
|
// src/utils/presets.ts
|
|
11
|
-
var defaultContext = {
|
|
12
|
-
useEslint: false,
|
|
13
|
-
useRouter: false,
|
|
14
|
-
useStore: false
|
|
15
|
-
};
|
|
11
|
+
var defaultContext = {};
|
|
16
12
|
var baseContext = {
|
|
17
|
-
...defaultContext
|
|
18
|
-
useEslint: true,
|
|
19
|
-
useRouter: true
|
|
13
|
+
...defaultContext
|
|
20
14
|
};
|
|
21
15
|
var essentialsContext = {
|
|
22
|
-
...baseContext
|
|
23
|
-
useStore: true
|
|
16
|
+
...baseContext
|
|
24
17
|
};
|
|
25
18
|
var presets = {
|
|
26
19
|
"base": baseContext,
|
|
@@ -1141,8 +1134,243 @@ async function initPrompts(context) {
|
|
|
1141
1134
|
};
|
|
1142
1135
|
}
|
|
1143
1136
|
|
|
1144
|
-
// src/
|
|
1137
|
+
// src/utils/nonInteractivePrompts.ts
|
|
1138
|
+
import { join as join3, resolve as resolve4 } from "node:path";
|
|
1139
|
+
import { existsSync as existsSync3, readdirSync as readdirSync2 } from "node:fs";
|
|
1145
1140
|
import { red as red2 } from "kolorist";
|
|
1141
|
+
function resolveNonInteractiveContext(context) {
|
|
1142
|
+
if (context.usePreset) {
|
|
1143
|
+
context = {
|
|
1144
|
+
...context,
|
|
1145
|
+
...presets[context.usePreset]
|
|
1146
|
+
};
|
|
1147
|
+
}
|
|
1148
|
+
const projectName = context.projectName || "vuetify-project";
|
|
1149
|
+
const projectPath = join3(context.cwd, projectName);
|
|
1150
|
+
const directoryExists = existsSync3(projectPath);
|
|
1151
|
+
const directoryNotEmpty = directoryExists && readdirSync2(projectPath).length > 0;
|
|
1152
|
+
if (directoryNotEmpty && !context.canOverwrite) {
|
|
1153
|
+
console.error("\n\n", red2("\u2716") + ` Target directory ${resolve4(context.cwd, projectName)} exists and is not empty.`);
|
|
1154
|
+
console.error("Use --force or --overwrite flag to overwrite the directory.");
|
|
1155
|
+
process.exit(1);
|
|
1156
|
+
}
|
|
1157
|
+
let useTypeScript = context.useTypeScript;
|
|
1158
|
+
if (useTypeScript === void 0) {
|
|
1159
|
+
const preset = context.usePreset;
|
|
1160
|
+
useTypeScript = preset ? preset.startsWith("nuxt-") : false;
|
|
1161
|
+
}
|
|
1162
|
+
let usePackageManager = context.usePackageManager;
|
|
1163
|
+
if (usePackageManager === void 0) {
|
|
1164
|
+
const preset = context.usePreset;
|
|
1165
|
+
if (!preset || !preset.startsWith("nuxt-")) {
|
|
1166
|
+
usePackageManager = packageManager;
|
|
1167
|
+
}
|
|
1168
|
+
}
|
|
1169
|
+
let installDependencies3 = context.installDependencies;
|
|
1170
|
+
if (installDependencies3 === void 0) {
|
|
1171
|
+
const preset = context.usePreset;
|
|
1172
|
+
installDependencies3 = preset ? !preset.startsWith("nuxt-") : true;
|
|
1173
|
+
}
|
|
1174
|
+
const usePreset = context.usePreset || "default";
|
|
1175
|
+
const useNuxtModule = context.useNuxtModule;
|
|
1176
|
+
const useNuxtSSR = context.useNuxtSSR;
|
|
1177
|
+
const useNuxtSSRClientHints = context.useNuxtSSRClientHints;
|
|
1178
|
+
return {
|
|
1179
|
+
cwd: context.cwd,
|
|
1180
|
+
projectName,
|
|
1181
|
+
canOverwrite: context.canOverwrite || false,
|
|
1182
|
+
useTypeScript: useTypeScript || false,
|
|
1183
|
+
usePackageManager: usePackageManager || "npm",
|
|
1184
|
+
installDependencies: installDependencies3 || false,
|
|
1185
|
+
usePreset,
|
|
1186
|
+
useNuxtModule: useNuxtModule || false,
|
|
1187
|
+
useNuxtSSR: useNuxtSSR || false,
|
|
1188
|
+
useNuxtSSRClientHints: useNuxtSSRClientHints || false
|
|
1189
|
+
};
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
// package.json
|
|
1193
|
+
var package_default = {
|
|
1194
|
+
name: "create-vuetify",
|
|
1195
|
+
version: "2.7.0",
|
|
1196
|
+
author: "Elijah Kotyluk <elijah@elijahkotyluk.com>",
|
|
1197
|
+
license: "MIT",
|
|
1198
|
+
type: "module",
|
|
1199
|
+
bin: {
|
|
1200
|
+
"create-vuetify": "bin/index.js"
|
|
1201
|
+
},
|
|
1202
|
+
files: [
|
|
1203
|
+
"bin/index.js",
|
|
1204
|
+
"template",
|
|
1205
|
+
"dist"
|
|
1206
|
+
],
|
|
1207
|
+
repository: {
|
|
1208
|
+
type: "git",
|
|
1209
|
+
url: "git+https://github.com/vuetifyjs/create.git"
|
|
1210
|
+
},
|
|
1211
|
+
bugs: {
|
|
1212
|
+
url: "https://github.com/vuetifyjs/create/issues"
|
|
1213
|
+
},
|
|
1214
|
+
keywords: [
|
|
1215
|
+
"vuetify",
|
|
1216
|
+
"vue",
|
|
1217
|
+
"vue3",
|
|
1218
|
+
"ui",
|
|
1219
|
+
"scaffolding",
|
|
1220
|
+
"cli",
|
|
1221
|
+
"template",
|
|
1222
|
+
"create",
|
|
1223
|
+
"boilerplate",
|
|
1224
|
+
"starter",
|
|
1225
|
+
"typescript",
|
|
1226
|
+
"javascript",
|
|
1227
|
+
"vite",
|
|
1228
|
+
"pinia",
|
|
1229
|
+
"vue-router",
|
|
1230
|
+
"nuxt",
|
|
1231
|
+
"material-design",
|
|
1232
|
+
"material-ui",
|
|
1233
|
+
"components"
|
|
1234
|
+
],
|
|
1235
|
+
scripts: {
|
|
1236
|
+
build: "node ./scripts/build.js",
|
|
1237
|
+
start: "node ./index.js",
|
|
1238
|
+
dev: "node --run build && node --run start",
|
|
1239
|
+
lint: "eslint --fix .",
|
|
1240
|
+
prepublishOnly: "node --run build",
|
|
1241
|
+
release: "bumpp"
|
|
1242
|
+
},
|
|
1243
|
+
dependencies: {
|
|
1244
|
+
kolorist: "^1.8.0",
|
|
1245
|
+
magicast: "^0.3.5",
|
|
1246
|
+
minimist: "^1.2.8",
|
|
1247
|
+
"package-manager-detector": "^1.3.0",
|
|
1248
|
+
prompts: "^2.4.2",
|
|
1249
|
+
tinyexec: "^1.0.1",
|
|
1250
|
+
"validate-npm-package-name": "^6.0.2"
|
|
1251
|
+
},
|
|
1252
|
+
devDependencies: {
|
|
1253
|
+
"@types/minimist": "^1.2.5",
|
|
1254
|
+
"@types/node": "^22.18.5",
|
|
1255
|
+
"@types/prompts": "^2.4.9",
|
|
1256
|
+
"@types/validate-npm-package-name": "^4.0.2",
|
|
1257
|
+
bumpp: "^10.2.3",
|
|
1258
|
+
esbuild: "^0.25.9",
|
|
1259
|
+
eslint: "^9.35.0",
|
|
1260
|
+
"eslint-config-vuetify": "^4.2.0",
|
|
1261
|
+
nypm: "^0.6.2",
|
|
1262
|
+
typescript: "^5.9.2"
|
|
1263
|
+
},
|
|
1264
|
+
packageManager: "pnpm@9.15.9"
|
|
1265
|
+
};
|
|
1266
|
+
|
|
1267
|
+
// src/utils/cli/helpText.ts
|
|
1268
|
+
function getHelpText() {
|
|
1269
|
+
return `
|
|
1270
|
+
Usage: create-vuetify [project-name] [options]
|
|
1271
|
+
|
|
1272
|
+
Options:
|
|
1273
|
+
-p, --preset <preset> Choose a preset (base, default, essentials, nuxt-base, nuxt-default, nuxt-essentials)
|
|
1274
|
+
--ts, --typescript Use TypeScript
|
|
1275
|
+
--pm, --package-manager <manager> Package manager to use (npm, pnpm, yarn, bun, none)
|
|
1276
|
+
-i, --install Install dependencies
|
|
1277
|
+
-f, --force, --overwrite Overwrite existing directory
|
|
1278
|
+
--nuxt-module Use vuetify-nuxt-module (for Nuxt presets)
|
|
1279
|
+
--nuxt-ssr, --ssr Enable Nuxt SSR (for Nuxt presets)
|
|
1280
|
+
--nuxt-ssr-client-hints Enable Nuxt SSR Client Hints (for Nuxt presets)
|
|
1281
|
+
-h, --help Show help
|
|
1282
|
+
-v, --version Show version
|
|
1283
|
+
|
|
1284
|
+
Examples:
|
|
1285
|
+
create-vuetify # Interactive mode
|
|
1286
|
+
create-vuetify my-app --preset default --typescript # Non-interactive with TypeScript
|
|
1287
|
+
create-vuetify my-app --preset nuxt-essentials --ssr # Nuxt project with SSR
|
|
1288
|
+
create-vuetify my-app --force --install --pm pnpm # Force overwrite and install with pnpm
|
|
1289
|
+
|
|
1290
|
+
Presets:
|
|
1291
|
+
default - Barebones (Only Vue & Vuetify)
|
|
1292
|
+
base - Default (Adds routing, ESLint & SASS variables)
|
|
1293
|
+
essentials - Recommended (Everything from Default. Adds auto importing, layouts & pinia)
|
|
1294
|
+
nuxt-base - Nuxt Default (Adds Nuxt ESLint & SASS variables)
|
|
1295
|
+
nuxt-default - Nuxt Barebones (Only Vuetify)
|
|
1296
|
+
nuxt-essentials - Nuxt Recommended (Everything from Default. Enables auto importing & layouts)
|
|
1297
|
+
`.trim();
|
|
1298
|
+
}
|
|
1299
|
+
function getVersionText() {
|
|
1300
|
+
return `${package_default.version}`;
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
// src/utils/cli/parseArgs.ts
|
|
1304
|
+
import minimist from "minimist";
|
|
1305
|
+
var validPresets = ["base", "default", "essentials", "nuxt-base", "nuxt-default", "nuxt-essentials"];
|
|
1306
|
+
var validPackageManagers = ["npm", "pnpm", "yarn", "bun", "none"];
|
|
1307
|
+
function parseCliArgs(args) {
|
|
1308
|
+
const argv = minimist(args, {
|
|
1309
|
+
alias: {
|
|
1310
|
+
typescript: ["ts"],
|
|
1311
|
+
preset: ["p"],
|
|
1312
|
+
packageManager: ["pm", "package-manager"],
|
|
1313
|
+
installDependencies: ["install", "i"],
|
|
1314
|
+
overwrite: ["force", "f"],
|
|
1315
|
+
nuxtModule: ["nuxt-module"],
|
|
1316
|
+
nuxtSSR: ["nuxt-ssr", "ssr"],
|
|
1317
|
+
nuxtSSRClientHints: ["nuxt-ssr-client-hints", "client-hints"],
|
|
1318
|
+
help: ["h"],
|
|
1319
|
+
version: ["v"]
|
|
1320
|
+
},
|
|
1321
|
+
boolean: [
|
|
1322
|
+
"typescript",
|
|
1323
|
+
"installDependencies",
|
|
1324
|
+
"overwrite",
|
|
1325
|
+
"nuxtModule",
|
|
1326
|
+
"nuxtSSR",
|
|
1327
|
+
"nuxtSSRClientHints",
|
|
1328
|
+
"help",
|
|
1329
|
+
"version"
|
|
1330
|
+
],
|
|
1331
|
+
string: [
|
|
1332
|
+
"preset",
|
|
1333
|
+
"packageManager"
|
|
1334
|
+
]
|
|
1335
|
+
});
|
|
1336
|
+
if (argv.preset && !validPresets.includes(argv.preset)) {
|
|
1337
|
+
throw new Error(`'${argv.preset}' is not a valid preset. Valid presets are: ${validPresets.join(", ")}.`);
|
|
1338
|
+
}
|
|
1339
|
+
if (argv.packageManager && !validPackageManagers.includes(argv.packageManager)) {
|
|
1340
|
+
throw new Error(`'${argv.packageManager}' is not a valid package manager. Valid options are: ${validPackageManagers.join(", ")}.`);
|
|
1341
|
+
}
|
|
1342
|
+
const projectName = argv._[0];
|
|
1343
|
+
return {
|
|
1344
|
+
projectName,
|
|
1345
|
+
preset: argv.preset,
|
|
1346
|
+
typescript: argv.typescript,
|
|
1347
|
+
packageManager: argv.packageManager,
|
|
1348
|
+
installDependencies: argv.installDependencies,
|
|
1349
|
+
overwrite: argv.overwrite,
|
|
1350
|
+
nuxtModule: argv.nuxtModule,
|
|
1351
|
+
nuxtSSR: argv.nuxtSSR,
|
|
1352
|
+
nuxtSSRClientHints: argv.nuxtSSRClientHints,
|
|
1353
|
+
help: argv.help,
|
|
1354
|
+
version: argv.version
|
|
1355
|
+
};
|
|
1356
|
+
}
|
|
1357
|
+
function cliOptionsToContext(cliOptions, cwd2) {
|
|
1358
|
+
return {
|
|
1359
|
+
cwd: cwd2,
|
|
1360
|
+
projectName: cliOptions.projectName || "vuetify-project",
|
|
1361
|
+
useTypeScript: cliOptions.typescript,
|
|
1362
|
+
usePreset: cliOptions.preset ?? "default",
|
|
1363
|
+
usePackageManager: cliOptions.packageManager === "none" ? void 0 : cliOptions.packageManager,
|
|
1364
|
+
installDependencies: cliOptions.installDependencies,
|
|
1365
|
+
canOverwrite: cliOptions.overwrite ?? false,
|
|
1366
|
+
useNuxtModule: cliOptions.nuxtModule ?? true,
|
|
1367
|
+
useNuxtSSR: cliOptions.nuxtSSR ?? true,
|
|
1368
|
+
useNuxtSSRClientHints: cliOptions.nuxtSSRClientHints ?? (cliOptions.nuxtModule && cliOptions.nuxtSSR)
|
|
1369
|
+
};
|
|
1370
|
+
}
|
|
1371
|
+
|
|
1372
|
+
// src/index.ts
|
|
1373
|
+
import { red as red3 } from "kolorist";
|
|
1146
1374
|
|
|
1147
1375
|
// src/utils/banner.ts
|
|
1148
1376
|
import { blue } from "kolorist";
|
|
@@ -1158,16 +1386,9 @@ function createBanner() {
|
|
|
1158
1386
|
return "\x1B[38;2;22;151;246mV\x1B[39m\x1B[38;2;22;147;242mu\x1B[39m\x1B[38;2;22;144;238me\x1B[39m\x1B[38;2;22;140;234mt\x1B[39m\x1B[38;2;23;136;229mi\x1B[39m\x1B[38;2;23;133;225mf\x1B[39m\x1B[38;2;23;129;221my\x1B[39m\x1B[38;2;23;125;217m.\x1B[39m\x1B[38;2;23;121;213mj\x1B[39m\x1B[38;2;23;118;209ms\x1B[39m \x1B[38;2;24;114;204m-\x1B[39m \x1B[38;2;24;110;200mM\x1B[39m\x1B[38;2;24;107;196ma\x1B[39m\x1B[38;2;24;103;192mt\x1B[39m\x1B[38;2;32;110;197me\x1B[39m\x1B[38;2;39;118;202mr\x1B[39m\x1B[38;2;47;125;207mi\x1B[39m\x1B[38;2;54;132;211ma\x1B[39m\x1B[38;2;62;140;216ml\x1B[39m \x1B[38;2;70;147;221mC\x1B[39m\x1B[38;2;77;154;226mo\x1B[39m\x1B[38;2;85;161;231mm\x1B[39m\x1B[38;2;93;169;236mp\x1B[39m\x1B[38;2;100;176;240mo\x1B[39m\x1B[38;2;108;183;245mn\x1B[39m\x1B[38;2;115;191;250me\x1B[39m\x1B[38;2;123;198;255mn\x1B[39m\x1B[38;2;126;199;255mt\x1B[39m \x1B[38;2;129;201;255mF\x1B[39m\x1B[38;2;133;202;255mr\x1B[39m\x1B[38;2;136;204;255ma\x1B[39m\x1B[38;2;139;205;255mm\x1B[39m\x1B[38;2;142;207;255me\x1B[39m\x1B[38;2;145;208;255mw\x1B[39m\x1B[38;2;149;210;255mo\x1B[39m\x1B[38;2;152;211;255mr\x1B[39m\x1B[38;2;155;212;255mk\x1B[39m \x1B[38;2;158;214;255mf\x1B[39m\x1B[38;2;161;215;255mo\x1B[39m\x1B[38;2;164;217;255mr\x1B[39m \x1B[38;2;168;218;255mV\x1B[39m\x1B[38;2;171;220;255mu\x1B[39m\x1B[38;2;174;221;255me\x1B[39m";
|
|
1159
1387
|
}
|
|
1160
1388
|
function createPlainBanner() {
|
|
1161
|
-
return "Vuetify
|
|
1389
|
+
return "Vuetify - Vue Component Framework";
|
|
1162
1390
|
}
|
|
1163
1391
|
|
|
1164
|
-
// src/index.ts
|
|
1165
|
-
import minimist from "minimist";
|
|
1166
|
-
|
|
1167
|
-
// src/utils/renderTemplate.ts
|
|
1168
|
-
import { copyFileSync, mkdirSync, readdirSync as readdirSync2, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
1169
|
-
import { basename as basename2, dirname as dirname2, resolve as resolve4 } from "node:path";
|
|
1170
|
-
|
|
1171
1392
|
// src/utils/deepMerge.ts
|
|
1172
1393
|
var isObject = (v) => {
|
|
1173
1394
|
return v === Object(v) && v !== null && !Array.isArray(v);
|
|
@@ -1186,26 +1407,30 @@ var deepMerge = (...sources) => sources.reduce((acc, curr) => {
|
|
|
1186
1407
|
}, {});
|
|
1187
1408
|
|
|
1188
1409
|
// src/utils/renderTemplate.ts
|
|
1410
|
+
import { copyFileSync, mkdirSync, readdirSync as readdirSync3, readFileSync, statSync, writeFileSync, existsSync as existsSync4 } from "node:fs";
|
|
1411
|
+
import { basename as basename2, dirname as dirname2, resolve as resolve5 } from "node:path";
|
|
1189
1412
|
function mergePkg(source, destination) {
|
|
1190
|
-
const target = JSON.parse(readFileSync(destination, "utf8"));
|
|
1413
|
+
const target = existsSync4(destination) ? JSON.parse(readFileSync(destination, "utf8")) : {};
|
|
1191
1414
|
const src = JSON.parse(readFileSync(source, "utf8"));
|
|
1192
1415
|
const mergedPkg = deepMerge(target, src);
|
|
1193
1416
|
const keysToSort = ["devDependencies", "dependencies"];
|
|
1194
1417
|
for (const k of keysToSort) {
|
|
1195
|
-
|
|
1418
|
+
if (mergedPkg[k]) {
|
|
1419
|
+
mergedPkg[k] = Object.keys(mergedPkg[k]).toSorted().reduce((a, c) => (a[c] = mergedPkg[k][c], a), {});
|
|
1420
|
+
}
|
|
1196
1421
|
}
|
|
1197
1422
|
writeFileSync(destination, JSON.stringify(mergedPkg, null, 2) + "\n");
|
|
1198
1423
|
}
|
|
1199
1424
|
function renderDirectory(source, destination) {
|
|
1200
1425
|
mkdirSync(destination, { recursive: true });
|
|
1201
|
-
for (const path4 of
|
|
1202
|
-
renderTemplate(
|
|
1426
|
+
for (const path4 of readdirSync3(source)) {
|
|
1427
|
+
renderTemplate(resolve5(source, path4), resolve5(destination, path4));
|
|
1203
1428
|
}
|
|
1204
1429
|
}
|
|
1205
1430
|
function renderFile(source, destination) {
|
|
1206
1431
|
const filename = basename2(source);
|
|
1207
1432
|
if (filename.startsWith("_")) {
|
|
1208
|
-
destination =
|
|
1433
|
+
destination = resolve5(dirname2(destination), filename.replace("_", "."));
|
|
1209
1434
|
}
|
|
1210
1435
|
if (filename === "package.json") {
|
|
1211
1436
|
mergePkg(source, destination);
|
|
@@ -1856,30 +2081,51 @@ function prepareProject(ctx) {
|
|
|
1856
2081
|
}
|
|
1857
2082
|
|
|
1858
2083
|
// src/index.ts
|
|
1859
|
-
var validPresets = ["base", "custom", "default", "essentials"];
|
|
1860
2084
|
async function run() {
|
|
1861
|
-
const
|
|
1862
|
-
alias: {
|
|
1863
|
-
typescript: ["ts"]
|
|
1864
|
-
}
|
|
1865
|
-
});
|
|
1866
|
-
if (argv.preset && !validPresets.includes(argv.preset)) {
|
|
1867
|
-
throw new Error(`'${argv.preset}' is not a valid preset. Valid presets are: ${validPresets.join(", ")}.`);
|
|
1868
|
-
}
|
|
2085
|
+
const args = process.argv.slice(2).slice();
|
|
1869
2086
|
const banner = createBanner();
|
|
2087
|
+
if (args.length === 0) {
|
|
2088
|
+
console.log(`
|
|
2089
|
+
${banner}
|
|
2090
|
+
`);
|
|
2091
|
+
const initialContext2 = {
|
|
2092
|
+
canOverwrite: false,
|
|
2093
|
+
cwd: process.cwd(),
|
|
2094
|
+
projectName: "vuetify-project"
|
|
2095
|
+
};
|
|
2096
|
+
const finalContext2 = await initPrompts(initialContext2);
|
|
2097
|
+
await createProject(finalContext2);
|
|
2098
|
+
return;
|
|
2099
|
+
}
|
|
2100
|
+
const cliOptions = parseCliArgs(args);
|
|
2101
|
+
if (cliOptions.help) {
|
|
2102
|
+
console.log(getHelpText());
|
|
2103
|
+
process.exit(0);
|
|
2104
|
+
}
|
|
2105
|
+
if (cliOptions.version) {
|
|
2106
|
+
console.log(getVersionText());
|
|
2107
|
+
process.exit(0);
|
|
2108
|
+
}
|
|
1870
2109
|
console.log(`
|
|
1871
2110
|
${banner}
|
|
1872
2111
|
`);
|
|
1873
|
-
const
|
|
1874
|
-
|
|
1875
|
-
cwd:
|
|
1876
|
-
projectName:
|
|
1877
|
-
|
|
1878
|
-
useTypeScript:
|
|
1879
|
-
usePreset:
|
|
1880
|
-
|
|
1881
|
-
|
|
2112
|
+
const cliContext = cliOptionsToContext(cliOptions, process.cwd());
|
|
2113
|
+
const initialContext = {
|
|
2114
|
+
cwd: cliContext.cwd,
|
|
2115
|
+
projectName: cliContext.projectName,
|
|
2116
|
+
canOverwrite: cliContext.canOverwrite,
|
|
2117
|
+
useTypeScript: cliContext.useTypeScript,
|
|
2118
|
+
usePreset: cliContext.usePreset,
|
|
2119
|
+
usePackageManager: cliContext.usePackageManager,
|
|
2120
|
+
installDependencies: cliContext.installDependencies,
|
|
2121
|
+
useNuxtModule: cliContext.useNuxtModule,
|
|
2122
|
+
useNuxtSSR: cliContext.useNuxtSSR,
|
|
2123
|
+
useNuxtSSRClientHints: cliContext.useNuxtSSRClientHints
|
|
1882
2124
|
};
|
|
2125
|
+
const finalContext = resolveNonInteractiveContext(initialContext);
|
|
2126
|
+
await createProject(finalContext);
|
|
2127
|
+
}
|
|
2128
|
+
async function createProject(finalContext) {
|
|
1883
2129
|
const {
|
|
1884
2130
|
canOverwrite,
|
|
1885
2131
|
cwd: cwd2,
|
|
@@ -1891,15 +2137,15 @@ ${banner}
|
|
|
1891
2137
|
useNuxtModule,
|
|
1892
2138
|
useNuxtSSR,
|
|
1893
2139
|
useNuxtSSRClientHints
|
|
1894
|
-
} =
|
|
1895
|
-
const projectRoot =
|
|
1896
|
-
if (canOverwrite) {
|
|
2140
|
+
} = finalContext;
|
|
2141
|
+
const projectRoot = join4(cwd2, projectName);
|
|
2142
|
+
if (canOverwrite && existsSync5(projectRoot)) {
|
|
1897
2143
|
rmSync(projectRoot, { recursive: true });
|
|
1898
2144
|
}
|
|
1899
|
-
const preset =
|
|
2145
|
+
const preset = finalContext.usePreset ?? usePreset;
|
|
1900
2146
|
if (preset.startsWith("nuxt-")) {
|
|
1901
|
-
const templateRoot =
|
|
1902
|
-
const templatePath =
|
|
2147
|
+
const templateRoot = resolve6(dirname3(fileURLToPath(import.meta.url)), "../template/typescript");
|
|
2148
|
+
const templatePath = resolve6(dirname3(fileURLToPath(import.meta.url)), "../template/typescript/nuxt");
|
|
1903
2149
|
await renderNuxtTemplate({
|
|
1904
2150
|
cwd: cwd2,
|
|
1905
2151
|
projectName,
|
|
@@ -1913,16 +2159,16 @@ ${banner}
|
|
|
1913
2159
|
});
|
|
1914
2160
|
} else {
|
|
1915
2161
|
mkdirSync2(projectRoot);
|
|
1916
|
-
writeFileSync2(
|
|
2162
|
+
writeFileSync2(resolve6(projectRoot, "package.json"), JSON.stringify({ name: projectName }, null, 2));
|
|
1917
2163
|
console.log("\n\u25CC Generating scaffold...");
|
|
1918
2164
|
const jsOrTs = useTypeScript ? "typescript" : "javascript";
|
|
1919
|
-
const templatePath =
|
|
1920
|
-
renderTemplate(
|
|
2165
|
+
const templatePath = resolve6(dirname3(fileURLToPath(import.meta.url)), "../template", jsOrTs);
|
|
2166
|
+
renderTemplate(resolve6(templatePath, "default"), projectRoot);
|
|
1921
2167
|
if (["base", "essentials"].includes(usePreset)) {
|
|
1922
|
-
renderTemplate(
|
|
2168
|
+
renderTemplate(resolve6(templatePath, "base"), projectRoot);
|
|
1923
2169
|
}
|
|
1924
2170
|
if (["essentials", "recommended"].includes(usePreset)) {
|
|
1925
|
-
renderTemplate(
|
|
2171
|
+
renderTemplate(resolve6(templatePath, "essentials"), projectRoot);
|
|
1926
2172
|
}
|
|
1927
2173
|
if (usePackageManager && installDeps) {
|
|
1928
2174
|
console.log(`\u25CC Installing dependencies with ${usePackageManager}...
|
|
@@ -1941,7 +2187,7 @@ run().then(() => {
|
|
|
1941
2187
|
process.exit(0);
|
|
1942
2188
|
}).catch((error) => {
|
|
1943
2189
|
console.error(`
|
|
1944
|
-
${
|
|
2190
|
+
${red3("\u2716")} ${error}
|
|
1945
2191
|
`);
|
|
1946
2192
|
process.exit(1);
|
|
1947
2193
|
});
|