create-rsbuild 0.7.3 → 0.7.4
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 +276 -43
- package/package.json +2 -1
- package/template-biome/biome.json +25 -0
- package/template-biome/extra-package.json +9 -0
- package/template-preact-ts/src/index.tsx +4 -1
- package/template-prettier/.prettierrc +3 -0
- package/template-prettier/extra-package.json +8 -0
- package/template-react-ts/src/index.tsx +9 -6
- package/template-solid-ts/src/index.tsx +4 -1
- package/template-svelte-js/src/index.js +0 -3
- package/template-svelte-ts/package.json +3 -1
- package/template-svelte-ts/src/index.ts +0 -3
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.52.0_eslint@9.4.0_typescript@5.4.5/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.52.0_eslint@9.4.0_typescript@5.4.5/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());
|
|
@@ -223,6 +223,110 @@ var require_picocolors2 = __commonJS({
|
|
|
223
223
|
}
|
|
224
224
|
});
|
|
225
225
|
|
|
226
|
+
// ../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js
|
|
227
|
+
var require_cjs = __commonJS({
|
|
228
|
+
"../../node_modules/.pnpm/deepmerge@4.3.1/node_modules/deepmerge/dist/cjs.js"(exports, module) {
|
|
229
|
+
"use strict";
|
|
230
|
+
init_esm();
|
|
231
|
+
var isMergeableObject = function isMergeableObject2(value) {
|
|
232
|
+
return isNonNullObject(value) && !isSpecial(value);
|
|
233
|
+
};
|
|
234
|
+
function isNonNullObject(value) {
|
|
235
|
+
return !!value && typeof value === "object";
|
|
236
|
+
}
|
|
237
|
+
function isSpecial(value) {
|
|
238
|
+
var stringValue = Object.prototype.toString.call(value);
|
|
239
|
+
return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value);
|
|
240
|
+
}
|
|
241
|
+
var canUseSymbol = typeof Symbol === "function" && Symbol.for;
|
|
242
|
+
var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103;
|
|
243
|
+
function isReactElement(value) {
|
|
244
|
+
return value.$$typeof === REACT_ELEMENT_TYPE;
|
|
245
|
+
}
|
|
246
|
+
function emptyTarget(val) {
|
|
247
|
+
return Array.isArray(val) ? [] : {};
|
|
248
|
+
}
|
|
249
|
+
function cloneUnlessOtherwiseSpecified(value, options) {
|
|
250
|
+
return options.clone !== false && options.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options) : value;
|
|
251
|
+
}
|
|
252
|
+
function defaultArrayMerge(target, source, options) {
|
|
253
|
+
return target.concat(source).map(function(element) {
|
|
254
|
+
return cloneUnlessOtherwiseSpecified(element, options);
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
function getMergeFunction(key, options) {
|
|
258
|
+
if (!options.customMerge) {
|
|
259
|
+
return deepmerge2;
|
|
260
|
+
}
|
|
261
|
+
var customMerge = options.customMerge(key);
|
|
262
|
+
return typeof customMerge === "function" ? customMerge : deepmerge2;
|
|
263
|
+
}
|
|
264
|
+
function getEnumerableOwnPropertySymbols(target) {
|
|
265
|
+
return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
|
|
266
|
+
return Object.propertyIsEnumerable.call(target, symbol);
|
|
267
|
+
}) : [];
|
|
268
|
+
}
|
|
269
|
+
function getKeys(target) {
|
|
270
|
+
return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));
|
|
271
|
+
}
|
|
272
|
+
function propertyIsOnObject(object, property) {
|
|
273
|
+
try {
|
|
274
|
+
return property in object;
|
|
275
|
+
} catch (_3) {
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
function propertyIsUnsafe(target, key) {
|
|
280
|
+
return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key));
|
|
281
|
+
}
|
|
282
|
+
function mergeObject(target, source, options) {
|
|
283
|
+
var destination = {};
|
|
284
|
+
if (options.isMergeableObject(target)) {
|
|
285
|
+
getKeys(target).forEach(function(key) {
|
|
286
|
+
destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
getKeys(source).forEach(function(key) {
|
|
290
|
+
if (propertyIsUnsafe(target, key)) {
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
if (propertyIsOnObject(target, key) && options.isMergeableObject(source[key])) {
|
|
294
|
+
destination[key] = getMergeFunction(key, options)(target[key], source[key], options);
|
|
295
|
+
} else {
|
|
296
|
+
destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
|
|
297
|
+
}
|
|
298
|
+
});
|
|
299
|
+
return destination;
|
|
300
|
+
}
|
|
301
|
+
function deepmerge2(target, source, options) {
|
|
302
|
+
options = options || {};
|
|
303
|
+
options.arrayMerge = options.arrayMerge || defaultArrayMerge;
|
|
304
|
+
options.isMergeableObject = options.isMergeableObject || isMergeableObject;
|
|
305
|
+
options.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
|
|
306
|
+
var sourceIsArray = Array.isArray(source);
|
|
307
|
+
var targetIsArray = Array.isArray(target);
|
|
308
|
+
var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
|
|
309
|
+
if (!sourceAndTargetTypesMatch) {
|
|
310
|
+
return cloneUnlessOtherwiseSpecified(source, options);
|
|
311
|
+
} else if (sourceIsArray) {
|
|
312
|
+
return options.arrayMerge(target, source, options);
|
|
313
|
+
} else {
|
|
314
|
+
return mergeObject(target, source, options);
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
deepmerge2.all = function deepmergeAll(array, options) {
|
|
318
|
+
if (!Array.isArray(array)) {
|
|
319
|
+
throw new Error("first argument should be an array");
|
|
320
|
+
}
|
|
321
|
+
return array.reduce(function(prev, next) {
|
|
322
|
+
return deepmerge2(prev, next, options);
|
|
323
|
+
}, {});
|
|
324
|
+
};
|
|
325
|
+
var deepmerge_1 = deepmerge2;
|
|
326
|
+
module.exports = deepmerge_1;
|
|
327
|
+
}
|
|
328
|
+
});
|
|
329
|
+
|
|
226
330
|
// src/index.ts
|
|
227
331
|
init_esm();
|
|
228
332
|
import fs from "fs";
|
|
@@ -543,6 +647,41 @@ var x = class {
|
|
|
543
647
|
}
|
|
544
648
|
}
|
|
545
649
|
};
|
|
650
|
+
var pD = Object.defineProperty;
|
|
651
|
+
var fD = (t, u, F) => u in t ? pD(t, u, { enumerable: true, configurable: true, writable: true, value: F }) : t[u] = F;
|
|
652
|
+
var K = (t, u, F) => (fD(t, typeof u != "symbol" ? u + "" : u, F), F);
|
|
653
|
+
var gD = class extends x {
|
|
654
|
+
constructor(u) {
|
|
655
|
+
super(u, false), K(this, "options"), K(this, "cursor", 0), this.options = u.options, this.value = [...u.initialValues ?? []], this.cursor = Math.max(this.options.findIndex(({ value: F }) => F === u.cursorAt), 0), this.on("key", (F) => {
|
|
656
|
+
F === "a" && this.toggleAll();
|
|
657
|
+
}), this.on("cursor", (F) => {
|
|
658
|
+
switch (F) {
|
|
659
|
+
case "left":
|
|
660
|
+
case "up":
|
|
661
|
+
this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;
|
|
662
|
+
break;
|
|
663
|
+
case "down":
|
|
664
|
+
case "right":
|
|
665
|
+
this.cursor = this.cursor === this.options.length - 1 ? 0 : this.cursor + 1;
|
|
666
|
+
break;
|
|
667
|
+
case "space":
|
|
668
|
+
this.toggleValue();
|
|
669
|
+
break;
|
|
670
|
+
}
|
|
671
|
+
});
|
|
672
|
+
}
|
|
673
|
+
get _value() {
|
|
674
|
+
return this.options[this.cursor].value;
|
|
675
|
+
}
|
|
676
|
+
toggleAll() {
|
|
677
|
+
const u = this.value.length === this.options.length;
|
|
678
|
+
this.value = u ? [] : this.options.map((F) => F.value);
|
|
679
|
+
}
|
|
680
|
+
toggleValue() {
|
|
681
|
+
const u = this.value.includes(this._value);
|
|
682
|
+
this.value = u ? this.value.filter((F) => F !== this._value) : [...this.value, this._value];
|
|
683
|
+
}
|
|
684
|
+
};
|
|
546
685
|
var bD = Object.defineProperty;
|
|
547
686
|
var wD = (t, u, F) => u in t ? bD(t, u, { enumerable: true, configurable: true, writable: true, value: F }) : t[u] = F;
|
|
548
687
|
var Z = (t, u, F) => (wD(t, typeof u != "symbol" ? u + "" : u, F), F);
|
|
@@ -604,7 +743,7 @@ var H = o("◆", "*");
|
|
|
604
743
|
var I2 = o("■", "x");
|
|
605
744
|
var x2 = o("▲", "x");
|
|
606
745
|
var S2 = o("◇", "o");
|
|
607
|
-
var
|
|
746
|
+
var K2 = o("┌", "T");
|
|
608
747
|
var a2 = o("│", "|");
|
|
609
748
|
var d2 = o("└", "—");
|
|
610
749
|
var b2 = o("●", ">");
|
|
@@ -683,6 +822,50 @@ ${import_picocolors2.default.cyan(d2)}
|
|
|
683
822
|
}
|
|
684
823
|
} }).prompt();
|
|
685
824
|
};
|
|
825
|
+
var ae = (r2) => {
|
|
826
|
+
const n = (i, t) => {
|
|
827
|
+
const s = i.label ?? String(i.value);
|
|
828
|
+
return t === "active" ? `${import_picocolors2.default.cyan(C)} ${s} ${i.hint ? import_picocolors2.default.dim(`(${i.hint})`) : ""}` : t === "selected" ? `${import_picocolors2.default.green(w2)} ${import_picocolors2.default.dim(s)}` : t === "cancelled" ? `${import_picocolors2.default.strikethrough(import_picocolors2.default.dim(s))}` : t === "active-selected" ? `${import_picocolors2.default.green(w2)} ${s} ${i.hint ? import_picocolors2.default.dim(`(${i.hint})`) : ""}` : t === "submitted" ? `${import_picocolors2.default.dim(s)}` : `${import_picocolors2.default.dim(M2)} ${import_picocolors2.default.dim(s)}`;
|
|
829
|
+
};
|
|
830
|
+
return new gD({ options: r2.options, initialValues: r2.initialValues, required: r2.required ?? true, cursorAt: r2.cursorAt, validate(i) {
|
|
831
|
+
if (this.required && i.length === 0)
|
|
832
|
+
return `Please select at least one option.
|
|
833
|
+
${import_picocolors2.default.reset(import_picocolors2.default.dim(`Press ${import_picocolors2.default.gray(import_picocolors2.default.bgWhite(import_picocolors2.default.inverse(" space ")))} to select, ${import_picocolors2.default.gray(import_picocolors2.default.bgWhite(import_picocolors2.default.inverse(" enter ")))} to submit`))}`;
|
|
834
|
+
}, render() {
|
|
835
|
+
let i = `${import_picocolors2.default.gray(a2)}
|
|
836
|
+
${y2(this.state)} ${r2.message}
|
|
837
|
+
`;
|
|
838
|
+
switch (this.state) {
|
|
839
|
+
case "submit":
|
|
840
|
+
return `${i}${import_picocolors2.default.gray(a2)} ${this.options.filter(({ value: t }) => this.value.includes(t)).map((t) => n(t, "submitted")).join(import_picocolors2.default.dim(", ")) || import_picocolors2.default.dim("none")}`;
|
|
841
|
+
case "cancel": {
|
|
842
|
+
const t = this.options.filter(({ value: s }) => this.value.includes(s)).map((s) => n(s, "cancelled")).join(import_picocolors2.default.dim(", "));
|
|
843
|
+
return `${i}${import_picocolors2.default.gray(a2)} ${t.trim() ? `${t}
|
|
844
|
+
${import_picocolors2.default.gray(a2)}` : ""}`;
|
|
845
|
+
}
|
|
846
|
+
case "error": {
|
|
847
|
+
const t = this.error.split(`
|
|
848
|
+
`).map((s, c2) => c2 === 0 ? `${import_picocolors2.default.yellow(d2)} ${import_picocolors2.default.yellow(s)}` : ` ${s}`).join(`
|
|
849
|
+
`);
|
|
850
|
+
return i + import_picocolors2.default.yellow(a2) + " " + this.options.map((s, c2) => {
|
|
851
|
+
const l2 = this.value.includes(s.value), u = c2 === this.cursor;
|
|
852
|
+
return u && l2 ? n(s, "active-selected") : l2 ? n(s, "selected") : n(s, u ? "active" : "inactive");
|
|
853
|
+
}).join(`
|
|
854
|
+
${import_picocolors2.default.yellow(a2)} `) + `
|
|
855
|
+
` + t + `
|
|
856
|
+
`;
|
|
857
|
+
}
|
|
858
|
+
default:
|
|
859
|
+
return `${i}${import_picocolors2.default.cyan(a2)} ${this.options.map((t, s) => {
|
|
860
|
+
const c2 = this.value.includes(t.value), l2 = s === this.cursor;
|
|
861
|
+
return l2 && c2 ? n(t, "active-selected") : c2 ? n(t, "selected") : n(t, l2 ? "active" : "inactive");
|
|
862
|
+
}).join(`
|
|
863
|
+
${import_picocolors2.default.cyan(a2)} `)}
|
|
864
|
+
${import_picocolors2.default.cyan(d2)}
|
|
865
|
+
`;
|
|
866
|
+
}
|
|
867
|
+
} }).prompt();
|
|
868
|
+
};
|
|
686
869
|
var R2 = (r2) => r2.replace(me(), "");
|
|
687
870
|
var le = (r2 = "", n = "") => {
|
|
688
871
|
const i = `
|
|
@@ -712,6 +895,9 @@ function me() {
|
|
|
712
895
|
return new RegExp(r2, "g");
|
|
713
896
|
}
|
|
714
897
|
|
|
898
|
+
// src/index.ts
|
|
899
|
+
var import_deepmerge = __toESM(require_cjs());
|
|
900
|
+
|
|
715
901
|
// ../../node_modules/.pnpm/rslog@1.2.2/node_modules/rslog/dist/index.mjs
|
|
716
902
|
init_esm();
|
|
717
903
|
import process2 from "process";
|
|
@@ -1003,6 +1189,7 @@ function checkCancel(value) {
|
|
|
1003
1189
|
if (hD(value)) {
|
|
1004
1190
|
cancelAndExit();
|
|
1005
1191
|
}
|
|
1192
|
+
return value;
|
|
1006
1193
|
}
|
|
1007
1194
|
function formatTargetDir(targetDir) {
|
|
1008
1195
|
return targetDir.trim().replace(/\/+$/g, "");
|
|
@@ -1030,57 +1217,74 @@ async function main() {
|
|
|
1030
1217
|
const packageRoot = path2.resolve(__dirname, "..");
|
|
1031
1218
|
const packageJsonPath = path2.join(packageRoot, "package.json");
|
|
1032
1219
|
const { version } = __require(packageJsonPath);
|
|
1033
|
-
let targetDir =
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1220
|
+
let targetDir = checkCancel(
|
|
1221
|
+
await te({
|
|
1222
|
+
message: "Input target folder",
|
|
1223
|
+
placeholder: "my-project",
|
|
1224
|
+
validate(value) {
|
|
1225
|
+
if (value.length === 0) {
|
|
1226
|
+
return "Target folder is required";
|
|
1227
|
+
}
|
|
1039
1228
|
}
|
|
1040
|
-
}
|
|
1041
|
-
|
|
1042
|
-
checkCancel(targetDir);
|
|
1229
|
+
})
|
|
1230
|
+
);
|
|
1043
1231
|
targetDir = formatTargetDir(targetDir);
|
|
1044
1232
|
const distFolder = path2.join(cwd, targetDir);
|
|
1045
1233
|
if (fs.existsSync(distFolder) && !isEmptyDir(distFolder)) {
|
|
1046
|
-
const option =
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1234
|
+
const option = checkCancel(
|
|
1235
|
+
await ie({
|
|
1236
|
+
message: `"${targetDir}" is not empty, please choose:`,
|
|
1237
|
+
options: [
|
|
1238
|
+
{ value: "yes", label: "Continue and override files" },
|
|
1239
|
+
{ value: "no", label: "Cancel operation" }
|
|
1240
|
+
]
|
|
1241
|
+
})
|
|
1242
|
+
);
|
|
1054
1243
|
if (option === "no") {
|
|
1055
1244
|
cancelAndExit();
|
|
1056
1245
|
}
|
|
1057
1246
|
}
|
|
1058
|
-
const framework =
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1247
|
+
const framework = checkCancel(
|
|
1248
|
+
await ie({
|
|
1249
|
+
message: "Select framework",
|
|
1250
|
+
options: [
|
|
1251
|
+
{ value: "react", label: "React" },
|
|
1252
|
+
{ value: "vue3", label: "Vue 3" },
|
|
1253
|
+
{ value: "vue2", label: "Vue 2" },
|
|
1254
|
+
{ value: "lit", label: "Lit" },
|
|
1255
|
+
{ value: "preact", label: "Preact" },
|
|
1256
|
+
{ value: "svelte", label: "Svelte" },
|
|
1257
|
+
{ value: "solid", label: "Solid" },
|
|
1258
|
+
{ value: "vanilla", label: "Vanilla" }
|
|
1259
|
+
]
|
|
1260
|
+
})
|
|
1261
|
+
);
|
|
1262
|
+
const language = checkCancel(
|
|
1263
|
+
await ie({
|
|
1264
|
+
message: "Select language",
|
|
1265
|
+
options: [
|
|
1266
|
+
{ value: "ts", label: "TypeScript" },
|
|
1267
|
+
{ value: "js", label: "JavaScript" }
|
|
1268
|
+
]
|
|
1269
|
+
})
|
|
1270
|
+
);
|
|
1271
|
+
const tools = checkCancel(
|
|
1272
|
+
await ae({
|
|
1273
|
+
message: "Select additional tools (use arrow keys / space bar)",
|
|
1274
|
+
options: [
|
|
1275
|
+
{ value: "biome", label: "Add Biome for code linting and formatting" },
|
|
1276
|
+
{ value: "prettier", label: "Add Prettier for code formatting" }
|
|
1277
|
+
]
|
|
1278
|
+
})
|
|
1279
|
+
);
|
|
1080
1280
|
const srcFolder = path2.join(packageRoot, `template-${framework}-${language}`);
|
|
1081
1281
|
const commonFolder = path2.join(packageRoot, "template-common");
|
|
1082
1282
|
copyFolder(commonFolder, distFolder, version);
|
|
1083
1283
|
copyFolder(srcFolder, distFolder, version, path2.basename(targetDir));
|
|
1284
|
+
for (const tool of tools) {
|
|
1285
|
+
const toolFolder = path2.join(packageRoot, `template-${tool}`);
|
|
1286
|
+
copyFolder(toolFolder, distFolder, version);
|
|
1287
|
+
}
|
|
1084
1288
|
const nextSteps = [
|
|
1085
1289
|
`cd ${targetDir}`,
|
|
1086
1290
|
`${pkgManager} i`,
|
|
@@ -1089,6 +1293,31 @@ async function main() {
|
|
|
1089
1293
|
le(nextSteps.join("\n"), "Next steps");
|
|
1090
1294
|
$e("Done.");
|
|
1091
1295
|
}
|
|
1296
|
+
function sortObjectKeys(obj) {
|
|
1297
|
+
const sortedKeys = Object.keys(obj).sort();
|
|
1298
|
+
const sortedObj = {};
|
|
1299
|
+
for (const key of sortedKeys) {
|
|
1300
|
+
sortedObj[key] = obj[key];
|
|
1301
|
+
}
|
|
1302
|
+
return sortedObj;
|
|
1303
|
+
}
|
|
1304
|
+
function mergePackageJson(targetPackage, extraPackage) {
|
|
1305
|
+
if (!fs.existsSync(targetPackage)) {
|
|
1306
|
+
return;
|
|
1307
|
+
}
|
|
1308
|
+
const content = (0, import_deepmerge.default)(
|
|
1309
|
+
JSON.parse(fs.readFileSync(targetPackage, "utf-8")),
|
|
1310
|
+
JSON.parse(fs.readFileSync(extraPackage, "utf-8"))
|
|
1311
|
+
);
|
|
1312
|
+
for (const key of ["scripts", "dependencies", "devDependencies"]) {
|
|
1313
|
+
if (!(key in content)) {
|
|
1314
|
+
continue;
|
|
1315
|
+
}
|
|
1316
|
+
content[key] = sortObjectKeys(content[key]);
|
|
1317
|
+
}
|
|
1318
|
+
fs.writeFileSync(targetPackage, `${JSON.stringify(content, null, 2)}
|
|
1319
|
+
`);
|
|
1320
|
+
}
|
|
1092
1321
|
function copyFolder(src, dist, version, name) {
|
|
1093
1322
|
const renameFiles = {
|
|
1094
1323
|
gitignore: ".gitignore"
|
|
@@ -1104,6 +1333,9 @@ function copyFolder(src, dist, version, name) {
|
|
|
1104
1333
|
const stat = fs.statSync(srcFile);
|
|
1105
1334
|
if (stat.isDirectory()) {
|
|
1106
1335
|
copyFolder(srcFile, distFile, version);
|
|
1336
|
+
} else if (file === "extra-package.json") {
|
|
1337
|
+
const targetPackage = path2.resolve(dist, "package.json");
|
|
1338
|
+
mergePackageJson(targetPackage, srcFile);
|
|
1107
1339
|
} else {
|
|
1108
1340
|
fs.copyFileSync(srcFile, distFile);
|
|
1109
1341
|
if (file === "package.json") {
|
|
@@ -1116,8 +1348,9 @@ var updatePackageJson = (pkgJsonPath, version, name) => {
|
|
|
1116
1348
|
let content = fs.readFileSync(pkgJsonPath, "utf-8");
|
|
1117
1349
|
content = content.replace(/workspace:\*/g, `^${version}`);
|
|
1118
1350
|
const pkg = JSON.parse(content);
|
|
1119
|
-
if (name)
|
|
1351
|
+
if (name && name !== ".") {
|
|
1120
1352
|
pkg.name = name;
|
|
1353
|
+
}
|
|
1121
1354
|
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2));
|
|
1122
1355
|
};
|
|
1123
1356
|
main();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-rsbuild",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"description": "Create a new Rsbuild project",
|
|
5
5
|
"homepage": "https://rsbuild.dev",
|
|
6
6
|
"repository": {
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@clack/prompts": "^0.7.0",
|
|
30
30
|
"@types/node": "18.x",
|
|
31
|
+
"deepmerge": "^4.3.1",
|
|
31
32
|
"rslog": "^1.2.2",
|
|
32
33
|
"typescript": "^5.4.2"
|
|
33
34
|
},
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://biomejs.dev/schemas/1.8.0/schema.json",
|
|
3
|
+
"organizeImports": {
|
|
4
|
+
"enabled": true
|
|
5
|
+
},
|
|
6
|
+
"vcs": {
|
|
7
|
+
"enabled": true,
|
|
8
|
+
"clientKind": "git",
|
|
9
|
+
"useIgnoreFile": true
|
|
10
|
+
},
|
|
11
|
+
"formatter": {
|
|
12
|
+
"indentStyle": "space"
|
|
13
|
+
},
|
|
14
|
+
"javascript": {
|
|
15
|
+
"formatter": {
|
|
16
|
+
"quoteStyle": "single"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"linter": {
|
|
20
|
+
"enabled": true,
|
|
21
|
+
"rules": {
|
|
22
|
+
"recommended": true
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -2,9 +2,12 @@ import React from 'react';
|
|
|
2
2
|
import ReactDOM from 'react-dom/client';
|
|
3
3
|
import App from './App';
|
|
4
4
|
|
|
5
|
-
const
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
const rootEl = document.getElementById('root');
|
|
6
|
+
if (rootEl) {
|
|
7
|
+
const root = ReactDOM.createRoot(rootEl);
|
|
8
|
+
root.render(
|
|
9
|
+
<React.StrictMode>
|
|
10
|
+
<App />
|
|
11
|
+
</React.StrictMode>,
|
|
12
|
+
);
|
|
13
|
+
}
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
"scripts": {
|
|
6
6
|
"dev": "rsbuild dev --open",
|
|
7
7
|
"build": "rsbuild build",
|
|
8
|
-
"preview": "rsbuild preview"
|
|
8
|
+
"preview": "rsbuild preview",
|
|
9
|
+
"svelte-check": "svelte-check --tsconfig ./tsconfig.json"
|
|
9
10
|
},
|
|
10
11
|
"dependencies": {
|
|
11
12
|
"svelte": "^4.2.17"
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
"devDependencies": {
|
|
14
15
|
"@rsbuild/core": "workspace:*",
|
|
15
16
|
"@rsbuild/plugin-svelte": "workspace:*",
|
|
17
|
+
"svelte-check": "^3.8.0",
|
|
16
18
|
"typescript": "^5.4.2"
|
|
17
19
|
}
|
|
18
20
|
}
|