create-vuetify 2.7.0-beta.3 → 2.7.2
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 +304 -57
- 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.2",
|
|
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);
|
|
@@ -1688,7 +1913,8 @@ function configureVuetify(ctx, nuxtConfig) {
|
|
|
1688
1913
|
};
|
|
1689
1914
|
config.css = [];
|
|
1690
1915
|
if (!ctx.useNuxtModule) {
|
|
1691
|
-
config.css.push("@mdi/font/css/materialdesignicons.css"
|
|
1916
|
+
config.css.push("@mdi/font/css/materialdesignicons.css");
|
|
1917
|
+
config.css.push("vuetify/styles");
|
|
1692
1918
|
}
|
|
1693
1919
|
addNuxtModule(nuxtConfig, "@nuxt/fonts");
|
|
1694
1920
|
return config;
|
|
@@ -1856,30 +2082,51 @@ function prepareProject(ctx) {
|
|
|
1856
2082
|
}
|
|
1857
2083
|
|
|
1858
2084
|
// src/index.ts
|
|
1859
|
-
var validPresets = ["base", "custom", "default", "essentials"];
|
|
1860
2085
|
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
|
-
}
|
|
2086
|
+
const args = process.argv.slice(2).slice();
|
|
1869
2087
|
const banner = createBanner();
|
|
2088
|
+
if (args.length === 0) {
|
|
2089
|
+
console.log(`
|
|
2090
|
+
${banner}
|
|
2091
|
+
`);
|
|
2092
|
+
const initialContext2 = {
|
|
2093
|
+
canOverwrite: false,
|
|
2094
|
+
cwd: process.cwd(),
|
|
2095
|
+
projectName: "vuetify-project"
|
|
2096
|
+
};
|
|
2097
|
+
const finalContext2 = await initPrompts(initialContext2);
|
|
2098
|
+
await createProject(finalContext2);
|
|
2099
|
+
return;
|
|
2100
|
+
}
|
|
2101
|
+
const cliOptions = parseCliArgs(args);
|
|
2102
|
+
if (cliOptions.help) {
|
|
2103
|
+
console.log(getHelpText());
|
|
2104
|
+
process.exit(0);
|
|
2105
|
+
}
|
|
2106
|
+
if (cliOptions.version) {
|
|
2107
|
+
console.log(getVersionText());
|
|
2108
|
+
process.exit(0);
|
|
2109
|
+
}
|
|
1870
2110
|
console.log(`
|
|
1871
2111
|
${banner}
|
|
1872
2112
|
`);
|
|
1873
|
-
const
|
|
1874
|
-
|
|
1875
|
-
cwd:
|
|
1876
|
-
projectName:
|
|
1877
|
-
|
|
1878
|
-
useTypeScript:
|
|
1879
|
-
usePreset:
|
|
1880
|
-
|
|
1881
|
-
|
|
2113
|
+
const cliContext = cliOptionsToContext(cliOptions, process.cwd());
|
|
2114
|
+
const initialContext = {
|
|
2115
|
+
cwd: cliContext.cwd,
|
|
2116
|
+
projectName: cliContext.projectName,
|
|
2117
|
+
canOverwrite: cliContext.canOverwrite,
|
|
2118
|
+
useTypeScript: cliContext.useTypeScript,
|
|
2119
|
+
usePreset: cliContext.usePreset,
|
|
2120
|
+
usePackageManager: cliContext.usePackageManager,
|
|
2121
|
+
installDependencies: cliContext.installDependencies,
|
|
2122
|
+
useNuxtModule: cliContext.useNuxtModule,
|
|
2123
|
+
useNuxtSSR: cliContext.useNuxtSSR,
|
|
2124
|
+
useNuxtSSRClientHints: cliContext.useNuxtSSRClientHints
|
|
1882
2125
|
};
|
|
2126
|
+
const finalContext = resolveNonInteractiveContext(initialContext);
|
|
2127
|
+
await createProject(finalContext);
|
|
2128
|
+
}
|
|
2129
|
+
async function createProject(finalContext) {
|
|
1883
2130
|
const {
|
|
1884
2131
|
canOverwrite,
|
|
1885
2132
|
cwd: cwd2,
|
|
@@ -1891,15 +2138,15 @@ ${banner}
|
|
|
1891
2138
|
useNuxtModule,
|
|
1892
2139
|
useNuxtSSR,
|
|
1893
2140
|
useNuxtSSRClientHints
|
|
1894
|
-
} =
|
|
1895
|
-
const projectRoot =
|
|
1896
|
-
if (canOverwrite) {
|
|
2141
|
+
} = finalContext;
|
|
2142
|
+
const projectRoot = join4(cwd2, projectName);
|
|
2143
|
+
if (canOverwrite && existsSync5(projectRoot)) {
|
|
1897
2144
|
rmSync(projectRoot, { recursive: true });
|
|
1898
2145
|
}
|
|
1899
|
-
const preset =
|
|
2146
|
+
const preset = finalContext.usePreset ?? usePreset;
|
|
1900
2147
|
if (preset.startsWith("nuxt-")) {
|
|
1901
|
-
const templateRoot =
|
|
1902
|
-
const templatePath =
|
|
2148
|
+
const templateRoot = resolve6(dirname3(fileURLToPath(import.meta.url)), "../template/typescript");
|
|
2149
|
+
const templatePath = resolve6(dirname3(fileURLToPath(import.meta.url)), "../template/typescript/nuxt");
|
|
1903
2150
|
await renderNuxtTemplate({
|
|
1904
2151
|
cwd: cwd2,
|
|
1905
2152
|
projectName,
|
|
@@ -1913,16 +2160,16 @@ ${banner}
|
|
|
1913
2160
|
});
|
|
1914
2161
|
} else {
|
|
1915
2162
|
mkdirSync2(projectRoot);
|
|
1916
|
-
writeFileSync2(
|
|
2163
|
+
writeFileSync2(resolve6(projectRoot, "package.json"), JSON.stringify({ name: projectName }, null, 2));
|
|
1917
2164
|
console.log("\n\u25CC Generating scaffold...");
|
|
1918
2165
|
const jsOrTs = useTypeScript ? "typescript" : "javascript";
|
|
1919
|
-
const templatePath =
|
|
1920
|
-
renderTemplate(
|
|
2166
|
+
const templatePath = resolve6(dirname3(fileURLToPath(import.meta.url)), "../template", jsOrTs);
|
|
2167
|
+
renderTemplate(resolve6(templatePath, "default"), projectRoot);
|
|
1921
2168
|
if (["base", "essentials"].includes(usePreset)) {
|
|
1922
|
-
renderTemplate(
|
|
2169
|
+
renderTemplate(resolve6(templatePath, "base"), projectRoot);
|
|
1923
2170
|
}
|
|
1924
2171
|
if (["essentials", "recommended"].includes(usePreset)) {
|
|
1925
|
-
renderTemplate(
|
|
2172
|
+
renderTemplate(resolve6(templatePath, "essentials"), projectRoot);
|
|
1926
2173
|
}
|
|
1927
2174
|
if (usePackageManager && installDeps) {
|
|
1928
2175
|
console.log(`\u25CC Installing dependencies with ${usePackageManager}...
|
|
@@ -1941,7 +2188,7 @@ run().then(() => {
|
|
|
1941
2188
|
process.exit(0);
|
|
1942
2189
|
}).catch((error) => {
|
|
1943
2190
|
console.error(`
|
|
1944
|
-
${
|
|
2191
|
+
${red3("\u2716")} ${error}
|
|
1945
2192
|
`);
|
|
1946
2193
|
process.exit(1);
|
|
1947
2194
|
});
|