create-rsbuild 1.0.1-beta.0 → 1.0.1-beta.1
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.js +318 -39
- package/package.json +3 -1
- package/template-lit-js/package.json +4 -2
- package/template-lit-ts/package.json +3 -1
package/dist/index.js
CHANGED
|
@@ -38,12 +38,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
38
38
|
mod
|
|
39
39
|
));
|
|
40
40
|
|
|
41
|
-
// ../../node_modules/.pnpm/@modern-js+module-tools@2.
|
|
41
|
+
// ../../node_modules/.pnpm/@modern-js+module-tools@2.55.0_eslint@9.6.0_typescript@5.5.2/node_modules/@modern-js/module-tools/shims/esm.js
|
|
42
42
|
import { fileURLToPath } from "url";
|
|
43
43
|
import path from "path";
|
|
44
44
|
var getFilename, getDirname, __dirname;
|
|
45
45
|
var init_esm = __esm({
|
|
46
|
-
"../../node_modules/.pnpm/@modern-js+module-tools@2.
|
|
46
|
+
"../../node_modules/.pnpm/@modern-js+module-tools@2.55.0_eslint@9.6.0_typescript@5.5.2/node_modules/@modern-js/module-tools/shims/esm.js"() {
|
|
47
47
|
"use strict";
|
|
48
48
|
getFilename = () => fileURLToPath(import.meta.url);
|
|
49
49
|
getDirname = () => path.dirname(getFilename());
|
|
@@ -276,6 +276,229 @@ var require_cjs = __commonJS({
|
|
|
276
276
|
}
|
|
277
277
|
});
|
|
278
278
|
|
|
279
|
+
// ../../node_modules/.pnpm/minimist@1.2.8/node_modules/minimist/index.js
|
|
280
|
+
var require_minimist = __commonJS({
|
|
281
|
+
"../../node_modules/.pnpm/minimist@1.2.8/node_modules/minimist/index.js"(exports, module) {
|
|
282
|
+
"use strict";
|
|
283
|
+
init_esm();
|
|
284
|
+
function hasKey(obj, keys) {
|
|
285
|
+
var o2 = obj;
|
|
286
|
+
keys.slice(0, -1).forEach(function(key2) {
|
|
287
|
+
o2 = o2[key2] || {};
|
|
288
|
+
});
|
|
289
|
+
var key = keys[keys.length - 1];
|
|
290
|
+
return key in o2;
|
|
291
|
+
}
|
|
292
|
+
function isNumber(x3) {
|
|
293
|
+
if (typeof x3 === "number") {
|
|
294
|
+
return true;
|
|
295
|
+
}
|
|
296
|
+
if (/^0x[0-9a-f]+$/i.test(x3)) {
|
|
297
|
+
return true;
|
|
298
|
+
}
|
|
299
|
+
return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x3);
|
|
300
|
+
}
|
|
301
|
+
function isConstructorOrProto(obj, key) {
|
|
302
|
+
return key === "constructor" && typeof obj[key] === "function" || key === "__proto__";
|
|
303
|
+
}
|
|
304
|
+
module.exports = function(args, opts) {
|
|
305
|
+
if (!opts) {
|
|
306
|
+
opts = {};
|
|
307
|
+
}
|
|
308
|
+
var flags = {
|
|
309
|
+
bools: {},
|
|
310
|
+
strings: {},
|
|
311
|
+
unknownFn: null
|
|
312
|
+
};
|
|
313
|
+
if (typeof opts.unknown === "function") {
|
|
314
|
+
flags.unknownFn = opts.unknown;
|
|
315
|
+
}
|
|
316
|
+
if (typeof opts.boolean === "boolean" && opts.boolean) {
|
|
317
|
+
flags.allBools = true;
|
|
318
|
+
} else {
|
|
319
|
+
[].concat(opts.boolean).filter(Boolean).forEach(function(key2) {
|
|
320
|
+
flags.bools[key2] = true;
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
var aliases = {};
|
|
324
|
+
function aliasIsBoolean(key2) {
|
|
325
|
+
return aliases[key2].some(function(x3) {
|
|
326
|
+
return flags.bools[x3];
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
Object.keys(opts.alias || {}).forEach(function(key2) {
|
|
330
|
+
aliases[key2] = [].concat(opts.alias[key2]);
|
|
331
|
+
aliases[key2].forEach(function(x3) {
|
|
332
|
+
aliases[x3] = [key2].concat(aliases[key2].filter(function(y3) {
|
|
333
|
+
return x3 !== y3;
|
|
334
|
+
}));
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
[].concat(opts.string).filter(Boolean).forEach(function(key2) {
|
|
338
|
+
flags.strings[key2] = true;
|
|
339
|
+
if (aliases[key2]) {
|
|
340
|
+
[].concat(aliases[key2]).forEach(function(k2) {
|
|
341
|
+
flags.strings[k2] = true;
|
|
342
|
+
});
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
var defaults = opts.default || {};
|
|
346
|
+
var argv = { _: [] };
|
|
347
|
+
function argDefined(key2, arg2) {
|
|
348
|
+
return flags.allBools && /^--[^=]+$/.test(arg2) || flags.strings[key2] || flags.bools[key2] || aliases[key2];
|
|
349
|
+
}
|
|
350
|
+
function setKey(obj, keys, value2) {
|
|
351
|
+
var o2 = obj;
|
|
352
|
+
for (var i2 = 0; i2 < keys.length - 1; i2++) {
|
|
353
|
+
var key2 = keys[i2];
|
|
354
|
+
if (isConstructorOrProto(o2, key2)) {
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
if (o2[key2] === void 0) {
|
|
358
|
+
o2[key2] = {};
|
|
359
|
+
}
|
|
360
|
+
if (o2[key2] === Object.prototype || o2[key2] === Number.prototype || o2[key2] === String.prototype) {
|
|
361
|
+
o2[key2] = {};
|
|
362
|
+
}
|
|
363
|
+
if (o2[key2] === Array.prototype) {
|
|
364
|
+
o2[key2] = [];
|
|
365
|
+
}
|
|
366
|
+
o2 = o2[key2];
|
|
367
|
+
}
|
|
368
|
+
var lastKey = keys[keys.length - 1];
|
|
369
|
+
if (isConstructorOrProto(o2, lastKey)) {
|
|
370
|
+
return;
|
|
371
|
+
}
|
|
372
|
+
if (o2 === Object.prototype || o2 === Number.prototype || o2 === String.prototype) {
|
|
373
|
+
o2 = {};
|
|
374
|
+
}
|
|
375
|
+
if (o2 === Array.prototype) {
|
|
376
|
+
o2 = [];
|
|
377
|
+
}
|
|
378
|
+
if (o2[lastKey] === void 0 || flags.bools[lastKey] || typeof o2[lastKey] === "boolean") {
|
|
379
|
+
o2[lastKey] = value2;
|
|
380
|
+
} else if (Array.isArray(o2[lastKey])) {
|
|
381
|
+
o2[lastKey].push(value2);
|
|
382
|
+
} else {
|
|
383
|
+
o2[lastKey] = [o2[lastKey], value2];
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
function setArg(key2, val, arg2) {
|
|
387
|
+
if (arg2 && flags.unknownFn && !argDefined(key2, arg2)) {
|
|
388
|
+
if (flags.unknownFn(arg2) === false) {
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
var value2 = !flags.strings[key2] && isNumber(val) ? Number(val) : val;
|
|
393
|
+
setKey(argv, key2.split("."), value2);
|
|
394
|
+
(aliases[key2] || []).forEach(function(x3) {
|
|
395
|
+
setKey(argv, x3.split("."), value2);
|
|
396
|
+
});
|
|
397
|
+
}
|
|
398
|
+
Object.keys(flags.bools).forEach(function(key2) {
|
|
399
|
+
setArg(key2, defaults[key2] === void 0 ? false : defaults[key2]);
|
|
400
|
+
});
|
|
401
|
+
var notFlags = [];
|
|
402
|
+
if (args.indexOf("--") !== -1) {
|
|
403
|
+
notFlags = args.slice(args.indexOf("--") + 1);
|
|
404
|
+
args = args.slice(0, args.indexOf("--"));
|
|
405
|
+
}
|
|
406
|
+
for (var i = 0; i < args.length; i++) {
|
|
407
|
+
var arg = args[i];
|
|
408
|
+
var key;
|
|
409
|
+
var next;
|
|
410
|
+
if (/^--.+=/.test(arg)) {
|
|
411
|
+
var m2 = arg.match(/^--([^=]+)=([\s\S]*)$/);
|
|
412
|
+
key = m2[1];
|
|
413
|
+
var value = m2[2];
|
|
414
|
+
if (flags.bools[key]) {
|
|
415
|
+
value = value !== "false";
|
|
416
|
+
}
|
|
417
|
+
setArg(key, value, arg);
|
|
418
|
+
} else if (/^--no-.+/.test(arg)) {
|
|
419
|
+
key = arg.match(/^--no-(.+)/)[1];
|
|
420
|
+
setArg(key, false, arg);
|
|
421
|
+
} else if (/^--.+/.test(arg)) {
|
|
422
|
+
key = arg.match(/^--(.+)/)[1];
|
|
423
|
+
next = args[i + 1];
|
|
424
|
+
if (next !== void 0 && !/^(-|--)[^-]/.test(next) && !flags.bools[key] && !flags.allBools && (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
425
|
+
setArg(key, next, arg);
|
|
426
|
+
i += 1;
|
|
427
|
+
} else if (/^(true|false)$/.test(next)) {
|
|
428
|
+
setArg(key, next === "true", arg);
|
|
429
|
+
i += 1;
|
|
430
|
+
} else {
|
|
431
|
+
setArg(key, flags.strings[key] ? "" : true, arg);
|
|
432
|
+
}
|
|
433
|
+
} else if (/^-[^-]+/.test(arg)) {
|
|
434
|
+
var letters = arg.slice(1, -1).split("");
|
|
435
|
+
var broken = false;
|
|
436
|
+
for (var j2 = 0; j2 < letters.length; j2++) {
|
|
437
|
+
next = arg.slice(j2 + 2);
|
|
438
|
+
if (next === "-") {
|
|
439
|
+
setArg(letters[j2], next, arg);
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
442
|
+
if (/[A-Za-z]/.test(letters[j2]) && next[0] === "=") {
|
|
443
|
+
setArg(letters[j2], next.slice(1), arg);
|
|
444
|
+
broken = true;
|
|
445
|
+
break;
|
|
446
|
+
}
|
|
447
|
+
if (/[A-Za-z]/.test(letters[j2]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
|
|
448
|
+
setArg(letters[j2], next, arg);
|
|
449
|
+
broken = true;
|
|
450
|
+
break;
|
|
451
|
+
}
|
|
452
|
+
if (letters[j2 + 1] && letters[j2 + 1].match(/\W/)) {
|
|
453
|
+
setArg(letters[j2], arg.slice(j2 + 2), arg);
|
|
454
|
+
broken = true;
|
|
455
|
+
break;
|
|
456
|
+
} else {
|
|
457
|
+
setArg(letters[j2], flags.strings[letters[j2]] ? "" : true, arg);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
key = arg.slice(-1)[0];
|
|
461
|
+
if (!broken && key !== "-") {
|
|
462
|
+
if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !flags.bools[key] && (aliases[key] ? !aliasIsBoolean(key) : true)) {
|
|
463
|
+
setArg(key, args[i + 1], arg);
|
|
464
|
+
i += 1;
|
|
465
|
+
} else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) {
|
|
466
|
+
setArg(key, args[i + 1] === "true", arg);
|
|
467
|
+
i += 1;
|
|
468
|
+
} else {
|
|
469
|
+
setArg(key, flags.strings[key] ? "" : true, arg);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
} else {
|
|
473
|
+
if (!flags.unknownFn || flags.unknownFn(arg) !== false) {
|
|
474
|
+
argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg));
|
|
475
|
+
}
|
|
476
|
+
if (opts.stopEarly) {
|
|
477
|
+
argv._.push.apply(argv._, args.slice(i + 1));
|
|
478
|
+
break;
|
|
479
|
+
}
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
Object.keys(defaults).forEach(function(k2) {
|
|
483
|
+
if (!hasKey(argv, k2.split("."))) {
|
|
484
|
+
setKey(argv, k2.split("."), defaults[k2]);
|
|
485
|
+
(aliases[k2] || []).forEach(function(x3) {
|
|
486
|
+
setKey(argv, x3.split("."), defaults[k2]);
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
});
|
|
490
|
+
if (opts["--"]) {
|
|
491
|
+
argv["--"] = notFlags.slice();
|
|
492
|
+
} else {
|
|
493
|
+
notFlags.forEach(function(k2) {
|
|
494
|
+
argv._.push(k2);
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
return argv;
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
});
|
|
501
|
+
|
|
279
502
|
// src/index.ts
|
|
280
503
|
init_esm();
|
|
281
504
|
import fs from "fs";
|
|
@@ -846,6 +1069,7 @@ function me() {
|
|
|
846
1069
|
|
|
847
1070
|
// src/index.ts
|
|
848
1071
|
var import_deepmerge = __toESM(require_cjs());
|
|
1072
|
+
var import_minimist = __toESM(require_minimist());
|
|
849
1073
|
|
|
850
1074
|
// ../../node_modules/.pnpm/rslog@1.2.2/node_modules/rslog/dist/index.mjs
|
|
851
1075
|
init_esm();
|
|
@@ -1161,42 +1385,38 @@ function isEmptyDir(path3) {
|
|
|
1161
1385
|
const files = fs.readdirSync(path3);
|
|
1162
1386
|
return files.length === 0 || files.length === 1 && files[0] === ".git";
|
|
1163
1387
|
}
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
|
|
1187
|
-
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
|
|
1192
|
-
|
|
1193
|
-
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
);
|
|
1197
|
-
if (option === "no") {
|
|
1198
|
-
cancelAndExit();
|
|
1199
|
-
}
|
|
1388
|
+
function logHelpMessage() {
|
|
1389
|
+
logger.log(`
|
|
1390
|
+
Usage: create-rsbuild [options]
|
|
1391
|
+
|
|
1392
|
+
Options:
|
|
1393
|
+
|
|
1394
|
+
-h, --help display help for command
|
|
1395
|
+
-d, --dir create project in specified directory
|
|
1396
|
+
-t, --template specify the template to use
|
|
1397
|
+
--tools select additional tools (biome, eslint, prettier)
|
|
1398
|
+
--override override files in target directory
|
|
1399
|
+
|
|
1400
|
+
Templates:
|
|
1401
|
+
|
|
1402
|
+
react react-ts
|
|
1403
|
+
vue3 vue3-ts
|
|
1404
|
+
vue2 vue2-ts
|
|
1405
|
+
lit lit-ts
|
|
1406
|
+
preact preact-ts
|
|
1407
|
+
svelte svelte-ts
|
|
1408
|
+
solid solid-ts
|
|
1409
|
+
vanilla vanilla-ts
|
|
1410
|
+
`);
|
|
1411
|
+
}
|
|
1412
|
+
async function getTemplate({ template }) {
|
|
1413
|
+
if (template) {
|
|
1414
|
+
const pair = template.split("-");
|
|
1415
|
+
const language2 = pair[1] ?? "js";
|
|
1416
|
+
return {
|
|
1417
|
+
framework: pair[0],
|
|
1418
|
+
language: language2
|
|
1419
|
+
};
|
|
1200
1420
|
}
|
|
1201
1421
|
const framework = checkCancel(
|
|
1202
1422
|
await ie({
|
|
@@ -1222,7 +1442,19 @@ async function main() {
|
|
|
1222
1442
|
]
|
|
1223
1443
|
})
|
|
1224
1444
|
);
|
|
1225
|
-
|
|
1445
|
+
return {
|
|
1446
|
+
framework,
|
|
1447
|
+
language
|
|
1448
|
+
};
|
|
1449
|
+
}
|
|
1450
|
+
async function getTools({ tools, dir, template }) {
|
|
1451
|
+
if (tools) {
|
|
1452
|
+
return Array.isArray(tools) ? tools : [tools];
|
|
1453
|
+
}
|
|
1454
|
+
if (dir && template) {
|
|
1455
|
+
return [];
|
|
1456
|
+
}
|
|
1457
|
+
return checkCancel(
|
|
1226
1458
|
await ae({
|
|
1227
1459
|
message: "Select additional tools (press enter to continue)",
|
|
1228
1460
|
options: [
|
|
@@ -1233,6 +1465,53 @@ async function main() {
|
|
|
1233
1465
|
required: false
|
|
1234
1466
|
})
|
|
1235
1467
|
);
|
|
1468
|
+
}
|
|
1469
|
+
async function main() {
|
|
1470
|
+
const argv = (0, import_minimist.default)(process.argv.slice(2), {
|
|
1471
|
+
alias: { h: "help", d: "dir", t: "template" }
|
|
1472
|
+
});
|
|
1473
|
+
console.log("");
|
|
1474
|
+
logger.greet("◆ Create Rsbuild Project");
|
|
1475
|
+
if (argv.help) {
|
|
1476
|
+
logHelpMessage();
|
|
1477
|
+
return;
|
|
1478
|
+
}
|
|
1479
|
+
const cwd = process.cwd();
|
|
1480
|
+
const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent);
|
|
1481
|
+
const pkgManager = pkgInfo ? pkgInfo.name : "npm";
|
|
1482
|
+
const packageRoot = path2.resolve(__dirname, "..");
|
|
1483
|
+
const packageJsonPath = path2.join(packageRoot, "package.json");
|
|
1484
|
+
const { version } = __require(packageJsonPath);
|
|
1485
|
+
const projectName = argv.dir ?? checkCancel(
|
|
1486
|
+
await te({
|
|
1487
|
+
message: "Project name or path",
|
|
1488
|
+
placeholder: "rsbuild-project",
|
|
1489
|
+
defaultValue: "rsbuild-project",
|
|
1490
|
+
validate(value) {
|
|
1491
|
+
if (value.length === 0) {
|
|
1492
|
+
return "Project name is required";
|
|
1493
|
+
}
|
|
1494
|
+
}
|
|
1495
|
+
})
|
|
1496
|
+
);
|
|
1497
|
+
const { targetDir, packageName } = formatProjectName(projectName);
|
|
1498
|
+
const distFolder = path2.isAbsolute(targetDir) ? targetDir : path2.join(cwd, targetDir);
|
|
1499
|
+
if (!argv.override && fs.existsSync(distFolder) && !isEmptyDir(distFolder)) {
|
|
1500
|
+
const option = checkCancel(
|
|
1501
|
+
await ie({
|
|
1502
|
+
message: `"${targetDir}" is not empty, please choose:`,
|
|
1503
|
+
options: [
|
|
1504
|
+
{ value: "yes", label: "Continue and override files" },
|
|
1505
|
+
{ value: "no", label: "Cancel operation" }
|
|
1506
|
+
]
|
|
1507
|
+
})
|
|
1508
|
+
);
|
|
1509
|
+
if (option === "no") {
|
|
1510
|
+
cancelAndExit();
|
|
1511
|
+
}
|
|
1512
|
+
}
|
|
1513
|
+
const { framework, language } = await getTemplate(argv);
|
|
1514
|
+
const tools = await getTools(argv);
|
|
1236
1515
|
const srcFolder = path2.join(packageRoot, `template-${framework}-${language}`);
|
|
1237
1516
|
const commonFolder = path2.join(packageRoot, "template-common");
|
|
1238
1517
|
copyFolder(commonFolder, distFolder, version);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-rsbuild",
|
|
3
|
-
"version": "1.0.1-beta.
|
|
3
|
+
"version": "1.0.1-beta.1",
|
|
4
4
|
"description": "Create a new Rsbuild project",
|
|
5
5
|
"homepage": "https://rsbuild.dev",
|
|
6
6
|
"repository": {
|
|
@@ -27,8 +27,10 @@
|
|
|
27
27
|
],
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@clack/prompts": "^0.7.0",
|
|
30
|
+
"@types/minimist": "^1.2.5",
|
|
30
31
|
"@types/node": "18.x",
|
|
31
32
|
"deepmerge": "^4.3.1",
|
|
33
|
+
"minimist": "^1.2.8",
|
|
32
34
|
"rslog": "^1.2.2",
|
|
33
35
|
"typescript": "^5.5.2"
|
|
34
36
|
},
|