@vobs/cli 1.2.1 → 1.2.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/banner.cjs +31 -7
- package/dist/banner.cjs.map +1 -1
- package/dist/banner.js +5 -3
- package/dist/banner.js.map +1 -1
- package/dist/cli.cjs +130 -98
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +65 -40
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.cjs +63 -49
- package/dist/commands/add.cjs.map +1 -1
- package/dist/commands/add.js +14 -9
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/build.cjs +50 -19
- package/dist/commands/build.cjs.map +1 -1
- package/dist/commands/build.js +9 -6
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/dev.cjs +50 -19
- package/dist/commands/dev.cjs.map +1 -1
- package/dist/commands/dev.js +9 -6
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/generate.cjs +76 -63
- package/dist/commands/generate.cjs.map +1 -1
- package/dist/commands/generate.js +24 -18
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/index.cjs +136 -100
- package/dist/commands/index.cjs.map +1 -1
- package/dist/commands/index.js +66 -39
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.cjs +89 -71
- package/dist/commands/init.cjs.map +1 -1
- package/dist/commands/init.js +28 -17
- package/dist/commands/init.js.map +1 -1
- package/dist/index.cjs +187 -132
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +94 -48
- package/dist/index.js.map +1 -1
- package/dist/repl.cjs +139 -111
- package/dist/repl.cjs.map +1 -1
- package/dist/repl.js +67 -46
- package/dist/repl.js.map +1 -1
- package/dist/start.cjs +151 -114
- package/dist/start.cjs.map +1 -1
- package/dist/start.js +76 -48
- package/dist/start.js.map +1 -1
- package/dist/types.cjs +18 -2
- package/dist/types.cjs.map +1 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +1 -1
- package/dist/utils/file.cjs +67 -34
- package/dist/utils/file.cjs.map +1 -1
- package/dist/utils/file.js +18 -12
- package/dist/utils/file.js.map +1 -1
- package/dist/utils/logger.cjs +56 -22
- package/dist/utils/logger.cjs.map +1 -1
- package/dist/utils/logger.js +11 -5
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/pm.cjs +41 -16
- package/dist/utils/pm.cjs.map +1 -1
- package/dist/utils/pm.js +10 -7
- package/dist/utils/pm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1,97 +1,128 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
var
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
var
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
var __VOBS_CJS_FILE_URL = require("url").pathToFileURL(__filename).href;
|
|
2
|
+
"use strict";
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
8
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
10
|
+
var __export = (target, all) => {
|
|
11
|
+
for (var name in all)
|
|
12
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
13
|
+
};
|
|
14
|
+
var __copyProps = (to, from, except, desc) => {
|
|
15
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
16
|
+
for (let key of __getOwnPropNames(from))
|
|
17
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
18
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
28
|
+
mod
|
|
29
|
+
));
|
|
30
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
14
31
|
|
|
15
|
-
|
|
16
|
-
|
|
32
|
+
// packages/cli/src/index.ts
|
|
33
|
+
var src_exports = {};
|
|
34
|
+
__export(src_exports, {
|
|
35
|
+
addCommand: () => addCommand,
|
|
36
|
+
addPackage: () => addPackage,
|
|
37
|
+
buildCommand: () => buildCommand,
|
|
38
|
+
createCLI: () => createCLI,
|
|
39
|
+
detectPackageManager: () => detectPackageManager,
|
|
40
|
+
devCommand: () => devCommand,
|
|
41
|
+
ensureDir: () => ensureDir,
|
|
42
|
+
generateCommand: () => generateCommand,
|
|
43
|
+
initCommand: () => initCommand,
|
|
44
|
+
installDependencies: () => installDependencies,
|
|
45
|
+
logger: () => logger,
|
|
46
|
+
renderTemplate: () => renderTemplate,
|
|
47
|
+
scaffoldProject: () => scaffoldProject,
|
|
48
|
+
showBanner: () => showBanner,
|
|
49
|
+
showDevBanner: () => showDevBanner,
|
|
50
|
+
showLogo: () => showLogo,
|
|
51
|
+
start: () => start,
|
|
52
|
+
startRepl: () => startRepl,
|
|
53
|
+
writeFile: () => writeFile
|
|
54
|
+
});
|
|
55
|
+
module.exports = __toCommonJS(src_exports);
|
|
17
56
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
var n = Object.create(null);
|
|
21
|
-
if (e) {
|
|
22
|
-
Object.keys(e).forEach(function (k) {
|
|
23
|
-
if (k !== 'default') {
|
|
24
|
-
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
25
|
-
Object.defineProperty(n, k, d.get ? d : {
|
|
26
|
-
enumerable: true,
|
|
27
|
-
get: function () { return e[k]; }
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
n.default = e;
|
|
33
|
-
return Object.freeze(n);
|
|
34
|
-
}
|
|
57
|
+
// packages/cli/src/cli.ts
|
|
58
|
+
var import_cac = require("cac");
|
|
35
59
|
|
|
36
|
-
|
|
37
|
-
var
|
|
38
|
-
var
|
|
60
|
+
// packages/cli/src/commands/init.ts
|
|
61
|
+
var import_node_path3 = require("path");
|
|
62
|
+
var import_node_child_process2 = require("child_process");
|
|
63
|
+
var p = __toESM(require("@clack/prompts"), 1);
|
|
39
64
|
|
|
40
|
-
|
|
41
|
-
var
|
|
65
|
+
// packages/cli/src/utils/logger.ts
|
|
66
|
+
var import_picocolors = __toESM(require("picocolors"), 1);
|
|
42
67
|
function timestamp() {
|
|
43
|
-
return
|
|
68
|
+
return import_picocolors.default.dim(`[${(/* @__PURE__ */ new Date()).toLocaleTimeString()}]`);
|
|
44
69
|
}
|
|
45
70
|
__name(timestamp, "timestamp");
|
|
46
71
|
function info(msg) {
|
|
47
|
-
console.log(`${timestamp()} ${
|
|
72
|
+
console.log(`${timestamp()} ${import_picocolors.default.cyan("\u2139")} ${msg}`);
|
|
48
73
|
}
|
|
49
74
|
__name(info, "info");
|
|
50
75
|
function success(msg) {
|
|
51
|
-
console.log(`${timestamp()} ${
|
|
76
|
+
console.log(`${timestamp()} ${import_picocolors.default.green("\u2714")} ${msg}`);
|
|
52
77
|
}
|
|
53
78
|
__name(success, "success");
|
|
54
79
|
function warn(msg) {
|
|
55
|
-
console.log(`${timestamp()} ${
|
|
80
|
+
console.log(`${timestamp()} ${import_picocolors.default.yellow("\u26A0")} ${msg}`);
|
|
56
81
|
}
|
|
57
82
|
__name(warn, "warn");
|
|
58
83
|
function error(msg) {
|
|
59
|
-
console.error(`${timestamp()} ${
|
|
84
|
+
console.error(`${timestamp()} ${import_picocolors.default.red("\u2716")} ${msg}`);
|
|
60
85
|
}
|
|
61
86
|
__name(error, "error");
|
|
62
87
|
function step(msg) {
|
|
63
88
|
console.log(`
|
|
64
|
-
${
|
|
89
|
+
${import_picocolors.default.bold(import_picocolors.default.cyan(msg))}`);
|
|
65
90
|
}
|
|
66
91
|
__name(step, "step");
|
|
67
92
|
var logger = { info, success, warn, error, step };
|
|
68
|
-
|
|
69
|
-
|
|
93
|
+
|
|
94
|
+
// packages/cli/src/utils/file.ts
|
|
95
|
+
var import_node_fs = require("fs");
|
|
96
|
+
var import_node_path = require("path");
|
|
97
|
+
var import_node_url = require("url");
|
|
98
|
+
var import_handlebars = __toESM(require("handlebars"), 1);
|
|
99
|
+
var __dirname = (0, import_node_path.dirname)((0, import_node_url.fileURLToPath)(__VOBS_CJS_FILE_URL));
|
|
100
|
+
var TEMPLATES_ROOT = (0, import_node_path.resolve)(__dirname, "..", "templates");
|
|
70
101
|
function getTemplatesDir() {
|
|
71
102
|
return TEMPLATES_ROOT;
|
|
72
103
|
}
|
|
73
104
|
__name(getTemplatesDir, "getTemplatesDir");
|
|
74
105
|
function renderTemplate(templatePath, context) {
|
|
75
|
-
const source =
|
|
76
|
-
const template =
|
|
106
|
+
const source = (0, import_node_fs.readFileSync)(templatePath, "utf-8");
|
|
107
|
+
const template = import_handlebars.default.compile(source);
|
|
77
108
|
return template(context);
|
|
78
109
|
}
|
|
79
110
|
__name(renderTemplate, "renderTemplate");
|
|
80
111
|
function writeFile(dir, filename, content) {
|
|
81
|
-
const filePath =
|
|
82
|
-
|
|
83
|
-
|
|
112
|
+
const filePath = (0, import_node_path.resolve)(dir, filename);
|
|
113
|
+
(0, import_node_fs.mkdirSync)((0, import_node_path.dirname)(filePath), { recursive: true });
|
|
114
|
+
(0, import_node_fs.writeFileSync)(filePath, content, "utf-8");
|
|
84
115
|
}
|
|
85
116
|
__name(writeFile, "writeFile");
|
|
86
117
|
function ensureDir(dir) {
|
|
87
|
-
if (!
|
|
88
|
-
|
|
118
|
+
if (!(0, import_node_fs.existsSync)(dir)) {
|
|
119
|
+
(0, import_node_fs.mkdirSync)(dir, { recursive: true });
|
|
89
120
|
}
|
|
90
121
|
}
|
|
91
122
|
__name(ensureDir, "ensureDir");
|
|
92
123
|
async function copyDirRecursive(srcDir, destDir, context) {
|
|
93
|
-
const { readdirSync } = await import(
|
|
94
|
-
const { join } = await import(
|
|
124
|
+
const { readdirSync } = await import("fs");
|
|
125
|
+
const { join } = await import("path");
|
|
95
126
|
const entries = readdirSync(srcDir, { withFileTypes: true });
|
|
96
127
|
for (const entry of entries) {
|
|
97
128
|
const srcPath = join(srcDir, entry.name);
|
|
@@ -105,23 +136,28 @@ async function copyDirRecursive(srcDir, destDir, context) {
|
|
|
105
136
|
const content = renderTemplate(srcPath, context);
|
|
106
137
|
writeFile(destDir, destName, content);
|
|
107
138
|
} else {
|
|
108
|
-
const content =
|
|
139
|
+
const content = (0, import_node_fs.readFileSync)(srcPath, "utf-8");
|
|
109
140
|
writeFile(destDir, destName, content);
|
|
110
141
|
}
|
|
111
142
|
}
|
|
112
143
|
}
|
|
113
144
|
__name(copyDirRecursive, "copyDirRecursive");
|
|
114
145
|
async function scaffoldProject(targetDir, context) {
|
|
115
|
-
const templateDir =
|
|
146
|
+
const templateDir = (0, import_node_path.resolve)(TEMPLATES_ROOT, "basic");
|
|
116
147
|
ensureDir(targetDir);
|
|
117
148
|
await copyDirRecursive(templateDir, targetDir, context);
|
|
118
149
|
}
|
|
119
150
|
__name(scaffoldProject, "scaffoldProject");
|
|
151
|
+
|
|
152
|
+
// packages/cli/src/utils/pm.ts
|
|
153
|
+
var import_node_fs2 = require("fs");
|
|
154
|
+
var import_node_path2 = require("path");
|
|
155
|
+
var import_node_child_process = require("child_process");
|
|
120
156
|
function detectPackageManager(targetDir) {
|
|
121
157
|
if (targetDir) {
|
|
122
|
-
if (
|
|
123
|
-
if (
|
|
124
|
-
if (
|
|
158
|
+
if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "pnpm-lock.yaml"))) return "pnpm";
|
|
159
|
+
if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "yarn.lock"))) return "yarn";
|
|
160
|
+
if ((0, import_node_fs2.existsSync)((0, import_node_path2.resolve)(targetDir, "package-lock.json"))) return "npm";
|
|
125
161
|
}
|
|
126
162
|
const userAgent = process.env.npm_config_user_agent || "";
|
|
127
163
|
if (userAgent.startsWith("pnpm")) return "pnpm";
|
|
@@ -132,29 +168,29 @@ function detectPackageManager(targetDir) {
|
|
|
132
168
|
__name(detectPackageManager, "detectPackageManager");
|
|
133
169
|
function installDependencies(targetDir, pm) {
|
|
134
170
|
const cmd = pm === "yarn" ? "yarn" : `${pm} install`;
|
|
135
|
-
|
|
171
|
+
(0, import_node_child_process.execSync)(cmd, { cwd: targetDir, stdio: "inherit" });
|
|
136
172
|
}
|
|
137
173
|
__name(installDependencies, "installDependencies");
|
|
138
174
|
function addPackage(targetDir, pm, pkg, dev) {
|
|
139
175
|
const installFlag = dev ? "-D" : "";
|
|
140
176
|
const cmd = pm === "npm" ? `npm install ${installFlag} ${pkg}` : pm === "yarn" ? `yarn add ${installFlag} ${pkg}` : `pnpm add ${installFlag} ${pkg}`;
|
|
141
|
-
|
|
177
|
+
(0, import_node_child_process.execSync)(cmd, { cwd: targetDir, stdio: "inherit" });
|
|
142
178
|
}
|
|
143
179
|
__name(addPackage, "addPackage");
|
|
144
180
|
|
|
145
181
|
// packages/cli/src/commands/init.ts
|
|
146
182
|
async function initCommand(options) {
|
|
147
|
-
const projectName = options.name || await
|
|
183
|
+
const projectName = options.name || await p.text({
|
|
148
184
|
message: "Project name:",
|
|
149
185
|
placeholder: "my-vobs-app",
|
|
150
186
|
validate: /* @__PURE__ */ __name((v) => !v ? "Project name is required" : void 0, "validate")
|
|
151
187
|
});
|
|
152
|
-
if (
|
|
153
|
-
|
|
188
|
+
if (p.isCancel(projectName)) {
|
|
189
|
+
p.cancel("Cancelled");
|
|
154
190
|
return;
|
|
155
191
|
}
|
|
156
|
-
const targetDir = options.targetDir ||
|
|
157
|
-
const packageManager = options.packageManager || await
|
|
192
|
+
const targetDir = options.targetDir || (0, import_node_path3.resolve)(process.cwd(), projectName);
|
|
193
|
+
const packageManager = options.packageManager || await p.select({
|
|
158
194
|
message: "Package manager:",
|
|
159
195
|
options: [
|
|
160
196
|
{ value: "pnpm", label: "pnpm" },
|
|
@@ -162,24 +198,24 @@ async function initCommand(options) {
|
|
|
162
198
|
{ value: "yarn", label: "yarn" }
|
|
163
199
|
]
|
|
164
200
|
});
|
|
165
|
-
if (
|
|
166
|
-
|
|
201
|
+
if (p.isCancel(packageManager)) {
|
|
202
|
+
p.cancel("Cancelled");
|
|
167
203
|
return;
|
|
168
204
|
}
|
|
169
|
-
const useTypescript = options.typescript ?? await
|
|
205
|
+
const useTypescript = options.typescript ?? await p.confirm({
|
|
170
206
|
message: "Use TypeScript?",
|
|
171
207
|
initialValue: true
|
|
172
208
|
});
|
|
173
|
-
if (
|
|
174
|
-
|
|
209
|
+
if (p.isCancel(useTypescript)) {
|
|
210
|
+
p.cancel("Cancelled");
|
|
175
211
|
return;
|
|
176
212
|
}
|
|
177
|
-
const initGit = options.git ?? await
|
|
213
|
+
const initGit = options.git ?? await p.confirm({
|
|
178
214
|
message: "Initialize a git repository?",
|
|
179
215
|
initialValue: true
|
|
180
216
|
});
|
|
181
|
-
if (
|
|
182
|
-
|
|
217
|
+
if (p.isCancel(initGit)) {
|
|
218
|
+
p.cancel("Cancelled");
|
|
183
219
|
return;
|
|
184
220
|
}
|
|
185
221
|
logger.step(`Creating project ${projectName}...`);
|
|
@@ -196,7 +232,7 @@ async function initCommand(options) {
|
|
|
196
232
|
if (initGit) {
|
|
197
233
|
logger.step("Initializing git repository...");
|
|
198
234
|
try {
|
|
199
|
-
|
|
235
|
+
(0, import_node_child_process2.execSync)("git init", { cwd: targetDir, stdio: "ignore" });
|
|
200
236
|
logger.success("Git repository initialized");
|
|
201
237
|
} catch {
|
|
202
238
|
logger.warn("Git not found, skipping git init");
|
|
@@ -208,9 +244,12 @@ async function initCommand(options) {
|
|
|
208
244
|
`);
|
|
209
245
|
}
|
|
210
246
|
__name(initCommand, "initCommand");
|
|
247
|
+
|
|
248
|
+
// packages/cli/src/commands/dev.ts
|
|
249
|
+
var import_vite = require("vite");
|
|
211
250
|
async function devCommand(options) {
|
|
212
251
|
logger.info("Starting dev server...");
|
|
213
|
-
const server = await
|
|
252
|
+
const server = await (0, import_vite.createServer)({
|
|
214
253
|
configFile: options.config,
|
|
215
254
|
server: {
|
|
216
255
|
port: options.port,
|
|
@@ -222,9 +261,12 @@ async function devCommand(options) {
|
|
|
222
261
|
logger.success("Dev server is running");
|
|
223
262
|
}
|
|
224
263
|
__name(devCommand, "devCommand");
|
|
264
|
+
|
|
265
|
+
// packages/cli/src/commands/build.ts
|
|
266
|
+
var import_vite2 = require("vite");
|
|
225
267
|
async function buildCommand(options) {
|
|
226
268
|
logger.info("Building for production...");
|
|
227
|
-
await
|
|
269
|
+
await (0, import_vite2.build)({
|
|
228
270
|
configFile: options.config,
|
|
229
271
|
build: {
|
|
230
272
|
outDir: options.outDir
|
|
@@ -234,56 +276,60 @@ async function buildCommand(options) {
|
|
|
234
276
|
logger.success("Build complete");
|
|
235
277
|
}
|
|
236
278
|
__name(buildCommand, "buildCommand");
|
|
279
|
+
|
|
280
|
+
// packages/cli/src/commands/generate.ts
|
|
281
|
+
var import_node_path4 = require("path");
|
|
282
|
+
var p2 = __toESM(require("@clack/prompts"), 1);
|
|
237
283
|
async function generateCommand(options) {
|
|
238
|
-
const type = options.type || await
|
|
284
|
+
const type = options.type || await p2.select({
|
|
239
285
|
message: "What to generate?",
|
|
240
286
|
options: [
|
|
241
287
|
{ value: "component", label: "Component" },
|
|
242
288
|
{ value: "page", label: "Page" }
|
|
243
289
|
]
|
|
244
290
|
});
|
|
245
|
-
if (
|
|
246
|
-
|
|
291
|
+
if (p2.isCancel(type)) {
|
|
292
|
+
p2.cancel("Cancelled");
|
|
247
293
|
return;
|
|
248
294
|
}
|
|
249
|
-
const name = options.name || await
|
|
295
|
+
const name = options.name || await p2.text({
|
|
250
296
|
message: "Name:",
|
|
251
297
|
placeholder: type === "component" ? "Button" : "AboutPage",
|
|
252
298
|
validate: /* @__PURE__ */ __name((v) => !v ? "Name is required" : void 0, "validate")
|
|
253
299
|
});
|
|
254
|
-
if (
|
|
255
|
-
|
|
300
|
+
if (p2.isCancel(name)) {
|
|
301
|
+
p2.cancel("Cancelled");
|
|
256
302
|
return;
|
|
257
303
|
}
|
|
258
304
|
const templatesDir = getTemplatesDir();
|
|
259
305
|
if (type === "component") {
|
|
260
|
-
const targetDir = options.targetDir ||
|
|
306
|
+
const targetDir = options.targetDir || (0, import_node_path4.resolve)(process.cwd(), "src/components");
|
|
261
307
|
ensureDir(targetDir);
|
|
262
308
|
const context = {
|
|
263
309
|
name: toPascalCase(name),
|
|
264
310
|
kebabName: toKebabCase(name)
|
|
265
311
|
};
|
|
266
312
|
const content = renderTemplate(
|
|
267
|
-
|
|
313
|
+
(0, import_node_path4.resolve)(templatesDir, "component.hbs"),
|
|
268
314
|
context
|
|
269
315
|
);
|
|
270
316
|
const filename = `${context.name}.tsx`;
|
|
271
317
|
writeFile(targetDir, filename, content);
|
|
272
|
-
logger.success(`Created ${type} at ${
|
|
318
|
+
logger.success(`Created ${type} at ${(0, import_node_path4.resolve)(targetDir, filename)}`);
|
|
273
319
|
} else {
|
|
274
|
-
const targetDir = options.targetDir ||
|
|
320
|
+
const targetDir = options.targetDir || (0, import_node_path4.resolve)(process.cwd(), "src/pages");
|
|
275
321
|
ensureDir(targetDir);
|
|
276
322
|
const context = {
|
|
277
323
|
name: toPascalCase(name),
|
|
278
324
|
path: `/${toKebabCase(name)}`
|
|
279
325
|
};
|
|
280
326
|
const content = renderTemplate(
|
|
281
|
-
|
|
327
|
+
(0, import_node_path4.resolve)(templatesDir, "page.hbs"),
|
|
282
328
|
context
|
|
283
329
|
);
|
|
284
330
|
const filename = `${context.name}.tsx`;
|
|
285
331
|
writeFile(targetDir, filename, content);
|
|
286
|
-
logger.success(`Created ${type} at ${
|
|
332
|
+
logger.success(`Created ${type} at ${(0, import_node_path4.resolve)(targetDir, filename)}`);
|
|
287
333
|
}
|
|
288
334
|
}
|
|
289
335
|
__name(generateCommand, "generateCommand");
|
|
@@ -295,22 +341,25 @@ function toKebabCase(str) {
|
|
|
295
341
|
return str.replace(/([A-Z])/g, "-$1").toLowerCase().replace(/^-/, "").replace(/[^a-z0-9-]/g, "-").replace(/--+/g, "-").replace(/^-|-$/g, "");
|
|
296
342
|
}
|
|
297
343
|
__name(toKebabCase, "toKebabCase");
|
|
344
|
+
|
|
345
|
+
// packages/cli/src/commands/add.ts
|
|
346
|
+
var p3 = __toESM(require("@clack/prompts"), 1);
|
|
298
347
|
async function addCommand(options) {
|
|
299
|
-
const pkg = options.package || await
|
|
348
|
+
const pkg = options.package || await p3.text({
|
|
300
349
|
message: "Package to add:",
|
|
301
350
|
placeholder: "@vobs/ui",
|
|
302
351
|
validate: /* @__PURE__ */ __name((v) => !v ? "Package name is required" : void 0, "validate")
|
|
303
352
|
});
|
|
304
|
-
if (
|
|
305
|
-
|
|
353
|
+
if (p3.isCancel(pkg)) {
|
|
354
|
+
p3.cancel("Cancelled");
|
|
306
355
|
return;
|
|
307
356
|
}
|
|
308
|
-
const isDev = options.dev ?? await
|
|
357
|
+
const isDev = options.dev ?? await p3.confirm({
|
|
309
358
|
message: "Save as dev dependency?",
|
|
310
359
|
initialValue: false
|
|
311
360
|
});
|
|
312
|
-
if (
|
|
313
|
-
|
|
361
|
+
if (p3.isCancel(isDev)) {
|
|
362
|
+
p3.cancel("Cancelled");
|
|
314
363
|
return;
|
|
315
364
|
}
|
|
316
365
|
const pm = detectPackageManager(process.cwd());
|
|
@@ -354,7 +403,7 @@ __name(showDevBanner, "showDevBanner");
|
|
|
354
403
|
|
|
355
404
|
// packages/cli/src/cli.ts
|
|
356
405
|
function createCLI() {
|
|
357
|
-
const cli =
|
|
406
|
+
const cli = (0, import_cac.cac)("vobs");
|
|
358
407
|
cli.command("init [name]", "Create a new vobs project").option("--dir <dir>", "Target directory").option("--pm <pm>", "Package manager (pnpm/npm/yarn)").option("--no-typescript", "Do not use TypeScript").option("--no-git", "Do not initialize git").action(async (name, options) => {
|
|
359
408
|
await initCommand({
|
|
360
409
|
name,
|
|
@@ -412,12 +461,17 @@ function createCLI() {
|
|
|
412
461
|
return cli;
|
|
413
462
|
}
|
|
414
463
|
__name(createCLI, "createCLI");
|
|
464
|
+
|
|
465
|
+
// packages/cli/src/repl.ts
|
|
466
|
+
var import_promises = require("readline/promises");
|
|
467
|
+
var import_node_process = require("process");
|
|
468
|
+
var import_picocolors2 = __toESM(require("picocolors"), 1);
|
|
415
469
|
async function startRepl() {
|
|
416
470
|
showLogo();
|
|
417
|
-
const rl =
|
|
418
|
-
input:
|
|
419
|
-
output:
|
|
420
|
-
prompt: ` ${
|
|
471
|
+
const rl = (0, import_promises.createInterface)({
|
|
472
|
+
input: import_node_process.stdin,
|
|
473
|
+
output: import_node_process.stdout,
|
|
474
|
+
prompt: ` ${import_picocolors2.default.magenta("\u276F")} `,
|
|
421
475
|
terminal: true
|
|
422
476
|
});
|
|
423
477
|
rl.prompt();
|
|
@@ -431,7 +485,7 @@ async function startRepl() {
|
|
|
431
485
|
try {
|
|
432
486
|
await dispatch(args);
|
|
433
487
|
} catch (err) {
|
|
434
|
-
console.error(` ${
|
|
488
|
+
console.error(` ${import_picocolors2.default.red("\u2716")} ${err instanceof Error ? err.message : String(err)}`);
|
|
435
489
|
}
|
|
436
490
|
rl.prompt();
|
|
437
491
|
}
|
|
@@ -440,15 +494,15 @@ __name(startRepl, "startRepl");
|
|
|
440
494
|
var TABLE = {
|
|
441
495
|
help: {
|
|
442
496
|
cmd: /* @__PURE__ */ __name(async () => {
|
|
443
|
-
console.log(` ${
|
|
444
|
-
console.log(` ${
|
|
445
|
-
console.log(` ${
|
|
446
|
-
console.log(` ${
|
|
447
|
-
console.log(` ${
|
|
448
|
-
console.log(` ${
|
|
449
|
-
console.log(` ${
|
|
450
|
-
console.log(` ${
|
|
451
|
-
console.log(` ${
|
|
497
|
+
console.log(` ${import_picocolors2.default.bold("Available commands:")}`);
|
|
498
|
+
console.log(` ${import_picocolors2.default.dim("exit|quit")} Leave the interactive CLI`);
|
|
499
|
+
console.log(` ${import_picocolors2.default.dim("clear")} Clear the screen`);
|
|
500
|
+
console.log(` ${import_picocolors2.default.dim("logo")} Re-print the banner`);
|
|
501
|
+
console.log(` ${import_picocolors2.default.dim("version")} Show version`);
|
|
502
|
+
console.log(` ${import_picocolors2.default.dim("init <name>")} Create a new vobs project`);
|
|
503
|
+
console.log(` ${import_picocolors2.default.dim("generate <name>")} Generate a component/page`);
|
|
504
|
+
console.log(` ${import_picocolors2.default.dim("add <package>")} Add a package`);
|
|
505
|
+
console.log(` ${import_picocolors2.default.dim("dev|build")} Use \`vobs dev\` / \`vobs build\` in a terminal`);
|
|
452
506
|
}, "cmd"),
|
|
453
507
|
help: ""
|
|
454
508
|
},
|
|
@@ -510,7 +564,7 @@ async function dispatch(args) {
|
|
|
510
564
|
await entry.cmd(rest);
|
|
511
565
|
return;
|
|
512
566
|
}
|
|
513
|
-
console.log(` ${
|
|
567
|
+
console.log(` ${import_picocolors2.default.yellow("\u26A0")} Unknown command: ${import_picocolors2.default.bold(String(name))}. Type ${import_picocolors2.default.cyan("help")} to see options.`);
|
|
514
568
|
}
|
|
515
569
|
__name(dispatch, "dispatch");
|
|
516
570
|
function splitArgs(line) {
|
|
@@ -537,25 +591,26 @@ async function start(args) {
|
|
|
537
591
|
createCLI().parse();
|
|
538
592
|
}
|
|
539
593
|
__name(start, "start");
|
|
540
|
-
|
|
541
|
-
exports
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
594
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
595
|
+
0 && (module.exports = {
|
|
596
|
+
addCommand,
|
|
597
|
+
addPackage,
|
|
598
|
+
buildCommand,
|
|
599
|
+
createCLI,
|
|
600
|
+
detectPackageManager,
|
|
601
|
+
devCommand,
|
|
602
|
+
ensureDir,
|
|
603
|
+
generateCommand,
|
|
604
|
+
initCommand,
|
|
605
|
+
installDependencies,
|
|
606
|
+
logger,
|
|
607
|
+
renderTemplate,
|
|
608
|
+
scaffoldProject,
|
|
609
|
+
showBanner,
|
|
610
|
+
showDevBanner,
|
|
611
|
+
showLogo,
|
|
612
|
+
start,
|
|
613
|
+
startRepl,
|
|
614
|
+
writeFile
|
|
615
|
+
});
|
|
561
616
|
//# sourceMappingURL=index.cjs.map
|