create-stardrive 1.2.3 → 1.3.3

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.
Files changed (2) hide show
  1. package/bin/index.js +79 -4
  2. package/package.json +2 -2
package/bin/index.js CHANGED
@@ -180,7 +180,8 @@ function removeFaq(targetDir2) {
180
180
  removePaths(targetDir2, [
181
181
  "src/content/faq-answers",
182
182
  "src/pages/faq.astro",
183
- "src/pages/[lang]/faq.astro"
183
+ "src/pages/[lang]/faq.astro",
184
+ "src/components/faq"
184
185
  ]);
185
186
  editFile(targetDir2, "src/content.config.ts", (content) => {
186
187
  const withoutDecl = removeBraceBlock(content, /const faq_answers = defineCollection\(/);
@@ -198,7 +199,7 @@ function removeIntegration(targetDir2) {
198
199
  "src/content/integration-options",
199
200
  "src/pages/integration",
200
201
  "src/pages/[lang]/integration",
201
- "src/components/integration-list.astro"
202
+ "src/components/integration"
202
203
  ]);
203
204
  editFile(targetDir2, "src/content.config.ts", (content) => {
204
205
  const withoutDecl = removeBraceBlock(
@@ -208,11 +209,36 @@ function removeIntegration(targetDir2) {
208
209
  return removeCollectionFromExport(withoutDecl, "integration_options");
209
210
  });
210
211
  }
212
+ function removeEvents(targetDir2) {
213
+ removePaths(targetDir2, [
214
+ "src/styles/events.css",
215
+ "src/pages/events",
216
+ "src/pages/[lang]/events",
217
+ "src/pages/dynamic-events-sitemap.xml.ts",
218
+ "src/components/events",
219
+ "src/content/events",
220
+ "src/images/content/events",
221
+ "src/utils/event-bridge.ts"
222
+ ]);
223
+ editFile(targetDir2, "src/content.config.ts", (content) => {
224
+ const withoutDecl = removeBraceBlock(content, /const events = defineCollection\(/);
225
+ return removeCollectionFromExport(withoutDecl, "events");
226
+ });
227
+ editFile(targetDir2, "theme.config.ts", (content) => {
228
+ const withoutSection = removeBraceBlock(content, /^[ \t]*dynamicEvents:\s*\{/m);
229
+ const withoutComment = removeLines(withoutSection, /^\s*\/\/ you can also dynamically integrate events.*$/m);
230
+ return removeLines(withoutComment, /^\s*addEvents:/);
231
+ });
232
+ editFile(targetDir2, "astro.config.ts", (content) => {
233
+ return removeLines(content, /^\s*customSitemaps:\s.*$/m);
234
+ });
235
+ }
211
236
  function cleanupNav(targetDir2, removed) {
212
237
  const routes = [
213
238
  removed.blog ? "blog" : null,
214
239
  removed.faq ? "faq" : null,
215
- removed.integration ? "integration" : null
240
+ removed.integration ? "integration" : null,
241
+ removed.events ? "events" : null
216
242
  ].filter((route) => route !== null);
217
243
  if (routes.length === 0) return;
218
244
  const pattern = new RegExp(
@@ -285,10 +311,16 @@ async function configureFeatures(targetDir2) {
285
311
  removeIntegration(targetDir2);
286
312
  ok("Removed the integration catalog");
287
313
  }
314
+ const keepEvents = await confirm(rl, "Keep the events feature?");
315
+ if (!keepEvents) {
316
+ removeEvents(targetDir2);
317
+ ok("Removed the events feature");
318
+ }
288
319
  cleanupNav(targetDir2, {
289
320
  blog: !keepBlog,
290
321
  faq: !keepFaq,
291
- integration: !keepIntegration
322
+ integration: !keepIntegration,
323
+ events: !keepEvents
292
324
  });
293
325
  const useCloudflare = await confirm(
294
326
  rl,
@@ -465,6 +497,47 @@ function calibratePackageJson(targetDir2, projectName2, pm2) {
465
497
  fs3.writeFileSync(packageJsonPath, JSON.stringify(pkg, null, 2));
466
498
  ok(`Named your ship ${c.bold(projectName2)}`);
467
499
  }
500
+ var LOCKFILE_RULES = {
501
+ npm: "package-lock.json",
502
+ pnpm: "pnpm-lock.yaml",
503
+ yarn: "yarn.lock",
504
+ bun: "bun.lockb"
505
+ };
506
+ function calibrateGitignore(targetDir2, pm2) {
507
+ step("Calibrating .gitignore lockfile rules");
508
+ const gitignorePath = path3.join(targetDir2, ".gitignore");
509
+ if (!fs3.existsSync(gitignorePath)) {
510
+ info("No .gitignore found, skipping lockfile calibration");
511
+ return;
512
+ }
513
+ const lines = fs3.readFileSync(gitignorePath, "utf8").split(/\r?\n/);
514
+ const activeRule = LOCKFILE_RULES[pm2];
515
+ const inactiveRules = Object.values(LOCKFILE_RULES).filter(
516
+ (rule) => rule !== activeRule
517
+ );
518
+ const rewritten = lines.map((line) => {
519
+ const trimmed = line.trim();
520
+ const match = trimmed.match(/^#?\s*(package-lock\.json|pnpm-lock\.yaml|yarn\.lock|bun\.lockb)$/);
521
+ if (!match) return line;
522
+ const rule = match[1];
523
+ if (rule === activeRule) {
524
+ return `#${rule}`;
525
+ }
526
+ if (inactiveRules.includes(rule)) {
527
+ return rule;
528
+ }
529
+ return line;
530
+ });
531
+ fs3.writeFileSync(gitignorePath, rewritten.join("\n"));
532
+ ok(`Enabled ${activeRule} for ${pm2}, ignored others`);
533
+ }
534
+ function setAgentMode(targetDir2) {
535
+ step("Specifying AI agent mode in the project");
536
+ const aiDir = path3.join(targetDir2, ".ai");
537
+ fs3.mkdirSync(aiDir, { recursive: true });
538
+ fs3.writeFileSync(path3.join(aiDir, "STARDRIVE_AGENT_MODE"), "project");
539
+ ok("Created .ai/STARDRIVE_AGENT_MODE");
540
+ }
468
541
  function installDependencies(targetDir2, projectName2, pm2, skipInstall2) {
469
542
  if (skipInstall2) {
470
543
  step("Skipping dependency install");
@@ -495,8 +568,10 @@ ok(`Selected ${c.bold(tag)}`);
495
568
  cloneRepo(tag, targetDir, projectName);
496
569
  trimProject(targetDir);
497
570
  calibratePackageJson(targetDir, projectName, pm);
571
+ calibrateGitignore(targetDir, pm);
498
572
  await configureFeatures(targetDir);
499
573
  installDependencies(targetDir, projectName, pm, skipInstall);
574
+ setAgentMode(targetDir);
500
575
  console.log(`
501
576
  ${c.green("All systems go.")} ${c.dim("Pre-flight checklist complete.")}
502
577
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-stardrive",
3
- "version": "1.2.3",
3
+ "version": "1.3.3",
4
4
  "description": "This is the launchpad application to create the Astro Stardrive boilerplate.",
5
5
  "bin": {
6
6
  "create-stardrive": "bin/index.js"
@@ -51,7 +51,7 @@
51
51
  "typecheck": "tsc --noEmit"
52
52
  },
53
53
  "devDependencies": {
54
- "@types/node": "^26.0.0",
54
+ "@types/node": "^26.1.0",
55
55
  "esbuild": "^0.28.1",
56
56
  "typescript": "^6.0.3"
57
57
  }