create-nextblock 0.2.25 → 0.2.27
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/bin/create-nextblock.js +24 -7
- package/package.json +1 -1
package/bin/create-nextblock.js
CHANGED
|
@@ -183,6 +183,13 @@ async function runSetupWizard(projectDir, projectName) {
|
|
|
183
183
|
await fs.ensureDir(supabaseDir);
|
|
184
184
|
await resetSupabaseProjectRef(projectPath);
|
|
185
185
|
|
|
186
|
+
clack.note(
|
|
187
|
+
"Before proceeding, ensure you have a Supabase project ready.\n\n" +
|
|
188
|
+
"1. Supabase Cloud: Create a project at https://supabase.com/dashboard\n" +
|
|
189
|
+
"2. Vercel Storage: If created via Vercel > Storage, check your .env.local snippet on Vercel for keys.",
|
|
190
|
+
"Supabase Prerequisites"
|
|
191
|
+
);
|
|
192
|
+
|
|
186
193
|
clack.note('Connecting to Supabase...');
|
|
187
194
|
clack.note('I will now open your browser to log into Supabase.');
|
|
188
195
|
await runSupabaseCli(['login'], { cwd: projectPath });
|
|
@@ -230,17 +237,20 @@ async function runSetupWizard(projectDir, projectName) {
|
|
|
230
237
|
{
|
|
231
238
|
dbPassword: () =>
|
|
232
239
|
clack.password({
|
|
233
|
-
message:
|
|
240
|
+
message:
|
|
241
|
+
'What is your Database Password? (Supabase: Database > Database Settings > Reset database password | Vercel: POSTGRES_PASSWORD)',
|
|
234
242
|
validate: (val) => (!val ? 'Password is required' : undefined),
|
|
235
243
|
}),
|
|
236
244
|
anonKey: () =>
|
|
237
245
|
clack.password({
|
|
238
|
-
message:
|
|
246
|
+
message:
|
|
247
|
+
'What is your Project API Key (anon key)? (Supabase: Project Settings > API Keys > Project Legacy API Keys | Vercel: SUPABASE_ANON_KEY)',
|
|
239
248
|
validate: (val) => (!val ? 'Anon Key is required' : undefined),
|
|
240
249
|
}),
|
|
241
250
|
serviceKey: () =>
|
|
242
251
|
clack.password({
|
|
243
|
-
message:
|
|
252
|
+
message:
|
|
253
|
+
'What is your Service Role Key (service_role key)? (Supabase: Project Settings > API Keys > Project Legacy API Keys | Vercel: SUPABASE_SERVICE_ROLE_KEY)',
|
|
244
254
|
validate: (val) => (!val ? 'Service Role Key is required' : undefined),
|
|
245
255
|
}),
|
|
246
256
|
},
|
|
@@ -331,8 +341,11 @@ async function runSetupWizard(projectDir, projectName) {
|
|
|
331
341
|
}
|
|
332
342
|
}
|
|
333
343
|
|
|
344
|
+
clack.note(
|
|
345
|
+
'Optional Cloudflare R2 Setup:\nHave your Account ID, API token (Access + Secret), bucket name, and public bucket URL handy if you want media storage ready now.',
|
|
346
|
+
);
|
|
334
347
|
const setupR2 = await clack.confirm({
|
|
335
|
-
message: 'Do you want to set up Cloudflare R2 for media storage now? (Optional)',
|
|
348
|
+
message: 'Do you want to set up Cloudflare R2 for media storage now? (Optional > populate .env keys)',
|
|
336
349
|
});
|
|
337
350
|
if (clack.isCancel(setupR2)) {
|
|
338
351
|
handleWizardCancel('Setup cancelled.');
|
|
@@ -354,7 +367,7 @@ async function runSetupWizard(projectDir, projectName) {
|
|
|
354
367
|
{
|
|
355
368
|
accountId: () =>
|
|
356
369
|
clack.text({
|
|
357
|
-
message: 'R2: Paste your Cloudflare Account ID:',
|
|
370
|
+
message: 'R2: Paste your Cloudflare Account ID (Overview > Account Details - Bottom right):',
|
|
358
371
|
validate: (val) => (!val ? 'Account ID is required' : undefined),
|
|
359
372
|
}),
|
|
360
373
|
bucketName: () =>
|
|
@@ -364,7 +377,7 @@ async function runSetupWizard(projectDir, projectName) {
|
|
|
364
377
|
}),
|
|
365
378
|
accessKey: () =>
|
|
366
379
|
clack.password({
|
|
367
|
-
message: 'R2: Paste your Access Key ID:',
|
|
380
|
+
message: 'R2: Paste your Access Key ID (create API tokens):',
|
|
368
381
|
validate: (val) => (!val ? 'Access Key ID is required' : undefined),
|
|
369
382
|
}),
|
|
370
383
|
secretKey: () =>
|
|
@@ -374,7 +387,8 @@ async function runSetupWizard(projectDir, projectName) {
|
|
|
374
387
|
}),
|
|
375
388
|
publicBaseUrl: () =>
|
|
376
389
|
clack.text({
|
|
377
|
-
message:
|
|
390
|
+
message:
|
|
391
|
+
'R2: Public Base URL (Bucket > Settings > Public Development URL-Enable: e.g., https://pub-xxx.r2.dev)',
|
|
378
392
|
validate: (val) => (!val ? 'Public base URL is required' : undefined),
|
|
379
393
|
}),
|
|
380
394
|
},
|
|
@@ -406,6 +420,9 @@ async function runSetupWizard(projectDir, projectName) {
|
|
|
406
420
|
clack.note('Cloudflare R2 placeholders added to .env. Configure them later when ready.');
|
|
407
421
|
}
|
|
408
422
|
|
|
423
|
+
clack.note(
|
|
424
|
+
'Optional SMTP Setup:\nProvide the host, port, credentials, and from details for your email provider (e.g., Resend, Postmark) to send transactional emails immediately.',
|
|
425
|
+
);
|
|
409
426
|
const setupSMTP = await clack.confirm({
|
|
410
427
|
message: 'Do you want to set up an SMTP server for emails now? (Optional)',
|
|
411
428
|
});
|