@vertesia/create-plugin 1.2.0 → 1.3.0-dev.20260620.061059Z

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 (42) hide show
  1. package/README.md +3 -0
  2. package/lib/configuration.d.ts.map +1 -1
  3. package/lib/configuration.js +2 -19
  4. package/lib/configuration.js.map +1 -1
  5. package/lib/download-template.d.ts +3 -0
  6. package/lib/download-template.d.ts.map +1 -1
  7. package/lib/download-template.js +10 -9
  8. package/lib/download-template.js.map +1 -1
  9. package/lib/index.js +65 -18
  10. package/lib/index.js.map +1 -1
  11. package/lib/package-manager.d.ts +4 -0
  12. package/lib/package-manager.d.ts.map +1 -1
  13. package/lib/package-manager.js +16 -10
  14. package/lib/package-manager.js.map +1 -1
  15. package/lib/post-install.d.ts +4 -1
  16. package/lib/post-install.d.ts.map +1 -1
  17. package/lib/post-install.js +19 -19
  18. package/lib/post-install.js.map +1 -1
  19. package/lib/process-template.d.ts +7 -4
  20. package/lib/process-template.d.ts.map +1 -1
  21. package/lib/process-template.js +60 -29
  22. package/lib/process-template.js.map +1 -1
  23. package/lib/prompts.d.ts +5 -2
  24. package/lib/prompts.d.ts.map +1 -1
  25. package/lib/prompts.js +21 -8
  26. package/lib/prompts.js.map +1 -1
  27. package/lib/template-config.d.ts +3 -1
  28. package/lib/template-config.d.ts.map +1 -1
  29. package/lib/template-config.js +2 -2
  30. package/lib/template-config.js.map +1 -1
  31. package/lib/template-selector.d.ts +1 -1
  32. package/lib/template-selector.d.ts.map +1 -1
  33. package/lib/template-selector.js +7 -7
  34. package/lib/template-selector.js.map +1 -1
  35. package/lib/transforms.d.ts +5 -0
  36. package/lib/transforms.d.ts.map +1 -1
  37. package/lib/transforms.js +12 -1
  38. package/lib/transforms.js.map +1 -1
  39. package/lib/version.d.ts.map +1 -1
  40. package/lib/version.js +5 -4
  41. package/lib/version.js.map +1 -1
  42. package/package.json +11 -9
package/README.md CHANGED
@@ -10,6 +10,9 @@ CLI tool to create Vertesia plugins:
10
10
  # Using pnpm create (recommended)
11
11
  pnpm create @vertesia/plugin my-project
12
12
 
13
+ # Opinionated content app scaffold
14
+ pnpm create @vertesia/plugin field-guide-library -- --content-app
15
+
13
16
  # Using npm create
14
17
  npm create @vertesia/plugin my-project
15
18
 
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,MAAM;IACjB;;;;;;OAMG;wBAkBE,kBAAkB,EAAE;IAEzB;;;OAGG;;IAGH;;;;OAIG;;IAGH;;OAEG;;CAEK,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;IACrB;;;OAGG;;IAGH;;OAEG;;IAGH;;OAEG;4BAME,MAAM,EAAE;CACL,CAAC"}
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,MAAM;IACf;;;;;;OAMG;wBAME,kBAAkB,EAAE;IAEzB;;;OAGG;;IAGH;;;;OAIG;;IAGH;;OAEG;;CAEG,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;IACnB;;;OAGG;;IAGH;;OAEG;;IAGH;;OAEG;4BACyD,MAAM,EAAE;CAC9D,CAAC"}
@@ -15,20 +15,8 @@ export const config = {
15
15
  templates: [
16
16
  {
17
17
  name: 'Vertesia Plugin',
18
- repository: 'vertesia/composableai/templates/plugin-template'
18
+ repository: 'vertesia/composableai/templates/plugin-template',
19
19
  },
20
- {
21
- name: 'Vertesia Tool Server (deprecated)',
22
- repository: 'vertesia/composableai/templates/tool-server-template'
23
- },
24
- {
25
- name: 'Vertesia UI Plugin (deprecated)',
26
- repository: 'vertesia/composableai/templates/ui-plugin-template'
27
- },
28
- {
29
- name: 'Vertesia Workflow Worker',
30
- repository: 'vertesia/composableai/templates/worker-template'
31
- }
32
20
  ],
33
21
  /**
34
22
  * Name of the template configuration file in the template repo
@@ -62,11 +50,6 @@ export const validation = {
62
50
  /**
63
51
  * Reserved project names that cannot be used
64
52
  */
65
- reservedNames: [
66
- 'test',
67
- 'node_modules',
68
- 'dist',
69
- 'build',
70
- ],
53
+ reservedNames: ['test', 'node_modules', 'dist', 'build'],
71
54
  };
72
55
  //# sourceMappingURL=configuration.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;;;;;OAMG;IACH,SAAS,EAAE;QACT;YACE,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,iDAAiD;SAC9D;QACD;YACE,IAAI,EAAE,mCAAmC;YACzC,UAAU,EAAE,sDAAsD;SACnE;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,UAAU,EAAE,oDAAoD;SACjE;QACD;YACE,IAAI,EAAE,0BAA0B;YAChC,UAAU,EAAE,iDAAiD;SAC9D;KACsB;IAEzB;;;OAGG;IACH,kBAAkB,EAAE,sBAAsB;IAE1C;;;;OAIG;IACH,QAAQ,EAAE,KAAK;IAEf;;OAEG;IACH,OAAO,EAAE,2BAA2B;CAC5B,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB;;;OAGG;IACH,kBAAkB,EAAE,cAAc;IAElC;;OAEG;IACH,gBAAgB,EAAE,uEAAuE;IAEzF;;OAEG;IACH,aAAa,EAAE;QACb,MAAM;QACN,cAAc;QACd,MAAM;QACN,OAAO;KACI;CACL,CAAC"}
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../src/configuration.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,CAAC,MAAM,MAAM,GAAG;IAClB;;;;;;OAMG;IACH,SAAS,EAAE;QACP;YACI,IAAI,EAAE,iBAAiB;YACvB,UAAU,EAAE,iDAAiD;SAChE;KACoB;IAEzB;;;OAGG;IACH,kBAAkB,EAAE,sBAAsB;IAE1C;;;;OAIG;IACH,QAAQ,EAAE,KAAK;IAEf;;OAEG;IACH,OAAO,EAAE,2BAA2B;CAC9B,CAAC;AAEX;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB;;;OAGG;IACH,kBAAkB,EAAE,cAAc;IAElC;;OAEG;IACH,gBAAgB,EAAE,uEAAuE;IAEzF;;OAEG;IACH,aAAa,EAAE,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAa;CAC9D,CAAC"}
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Template downloading from GitHub or local copy
3
+ */
1
4
  /**
2
5
  * Download template from GitHub using degit, or copy from a local directory.
3
6
  *
@@ -1 +1 @@
1
- {"version":3,"file":"download-template.d.ts","sourceRoot":"","sources":["../src/download-template.ts"],"names":[],"mappings":"AAoBA;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,IAAI,CAAC,CAgDf"}
1
+ {"version":3,"file":"download-template.d.ts","sourceRoot":"","sources":["../src/download-template.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoBH;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAClC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,kBAAkB,CAAC,EAAE,MAAM,GAC5B,OAAO,CAAC,IAAI,CAAC,CAgDf"}
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Template downloading from GitHub or local copy
3
3
  */
4
- import degit from 'degit';
4
+ import fs from 'node:fs';
5
+ import path from 'node:path';
5
6
  import chalk from 'chalk';
6
- import fs from 'fs';
7
- import path from 'path';
7
+ import degit from 'degit';
8
8
  import { config } from './configuration.js';
9
9
  /**
10
10
  * Extract the template directory name from a repository string.
@@ -14,6 +14,7 @@ function extractTemplateDirName(repository) {
14
14
  // Strip the #ref suffix if present
15
15
  const repoPath = repository.split('#')[0];
16
16
  // Last segment is the template directory name
17
+ // biome-ignore lint/style/noNonNullAssertion: intentional non-null assertion; TS can't prove narrowing here
17
18
  return repoPath.split('/').pop();
18
19
  }
19
20
  /**
@@ -27,7 +28,7 @@ export async function downloadTemplate(projectName, repository, localTemplatesPa
27
28
  if (localTemplatesPath) {
28
29
  const templateDir = extractTemplateDirName(repository);
29
30
  const sourcePath = path.resolve(localTemplatesPath, templateDir);
30
- console.log(chalk.blue('📦 Copying template from local directory...\n'));
31
+ console.log(chalk.blue('Copying template from local directory...\n'));
31
32
  console.log(chalk.gray(` Source: ${sourcePath}`));
32
33
  console.log(chalk.gray(` Target: ./${projectName}\n`));
33
34
  if (!fs.existsSync(sourcePath)) {
@@ -38,12 +39,12 @@ export async function downloadTemplate(projectName, repository, localTemplatesPa
38
39
  filter: (src) => {
39
40
  const rel = src.slice(sourcePath.length);
40
41
  return !rel.startsWith('/node_modules') && !rel.startsWith('/dist') && !rel.startsWith('/.pnpm');
41
- }
42
+ },
42
43
  });
43
- console.log(chalk.green(' Template copied\n'));
44
+ console.log(chalk.green(' Template copied\n'));
44
45
  return;
45
46
  }
46
- console.log(chalk.blue('📦 Downloading template from GitHub...\n'));
47
+ console.log(chalk.blue('Downloading template from GitHub...\n'));
47
48
  console.log(chalk.gray(` Repository: ${repository}`));
48
49
  console.log(chalk.gray(` Target: ./${projectName}\n`));
49
50
  const emitter = degit(repository, {
@@ -55,11 +56,11 @@ export async function downloadTemplate(projectName, repository, localTemplatesPa
55
56
  console.log(chalk.gray(` ${info.message}`));
56
57
  });
57
58
  emitter.on('warn', (warning) => {
58
- console.log(chalk.yellow(` ⚠️ ${warning.message}`));
59
+ console.log(chalk.yellow(` ${warning.message}`));
59
60
  });
60
61
  try {
61
62
  await emitter.clone(projectName);
62
- console.log(chalk.green(' Template downloaded\n'));
63
+ console.log(chalk.green(' Template downloaded\n'));
63
64
  }
64
65
  catch (error) {
65
66
  throw new Error(`Failed to download template: ${error instanceof Error ? error.message : 'Unknown error'}`);
@@ -1 +1 @@
1
- {"version":3,"file":"download-template.js","sourceRoot":"","sources":["../src/download-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"download-template.js","sourceRoot":"","sources":["../src/download-template.ts"],"names":[],"mappings":"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"}
package/lib/index.js CHANGED
@@ -5,14 +5,15 @@
5
5
  * CLI tool to create Vertesia tool server projects from GitHub templates.
6
6
  * Reads template.config.json from the template to determine prompts and file replacements.
7
7
  */
8
+ import { execSync } from 'node:child_process';
9
+ import fs from 'node:fs';
8
10
  import chalk from 'chalk';
9
11
  import { Command } from 'commander';
10
- import fs from 'fs';
11
12
  import { config, validation } from './configuration.js';
12
13
  import { downloadTemplate } from './download-template.js';
13
14
  import { installDependencies, selectPackageManager } from './package-manager.js';
14
15
  import { runPostInstallHooks, runPreInstallHooks } from './post-install.js';
15
- import { adjustPackageJson, handleConditionalRemoves, removeMetaFiles, renameFiles, replaceVariables } from './process-template.js';
16
+ import { adjustPackageJson, handleConditionalRemoves, removeMetaFiles, renameFiles, replaceVariables, } from './process-template.js';
16
17
  import { promptUser } from './prompts.js';
17
18
  import { readTemplateConfig } from './template-config.js';
18
19
  import { selectTemplate } from './template-selector.js';
@@ -29,17 +30,20 @@ async function main() {
29
30
  .option('-y, --yes', 'Non-interactive mode: use defaults for all prompts', false)
30
31
  .option('--dev', 'Use workspace dependencies (development mode)', false)
31
32
  .option('--local-templates <path>', 'Use local template directory instead of fetching from GitHub')
33
+ .option('--skip-install', 'Skip dependency installation after copying and configuring the template', false)
34
+ .option('--full', 'Start from the full scaffold (overlay examples/ onto src/) instead of the minimal one', false)
35
+ .option('--content-app', 'Start from the opinionated content app scaffold with types, interactions, process, UI, and exercise scripts', false)
32
36
  .option('--package-manager <manager>', 'Package manager to use: pnpm or npm (overrides template default and interactive selection)')
33
37
  .addHelpText('after', `
34
38
  Available Templates:
35
- ${config.templates.map(t => ` - ${t.name}`).join('\n')}
39
+ ${config.templates.map((t) => ` - ${t.name}`).join('\n')}
36
40
 
37
41
  Documentation: ${config.docsUrl}
38
42
  `)
39
43
  .parse();
40
44
  let projectName = program.args[0];
41
45
  const opts = program.opts();
42
- const { branch, template, yes: nonInteractive, dev, localTemplates, packageManager: packageManagerOverride } = opts;
46
+ const { branch, template, yes: nonInteractive, dev, localTemplates, skipInstall, full, contentApp, packageManager: packageManagerOverride, } = opts;
43
47
  // Prompt for project name if not provided as CLI argument
44
48
  if (!projectName) {
45
49
  const { default: prompts } = await import('prompts');
@@ -49,22 +53,25 @@ Documentation: ${config.docsUrl}
49
53
  message: 'Project name:',
50
54
  validate: (v) => validation.projectNamePattern.test(v) || validation.projectNameError,
51
55
  }, {
52
- onCancel: () => { console.log(chalk.red('\n❌ Installation cancelled.\n')); process.exit(1); },
56
+ onCancel: () => {
57
+ console.log(chalk.red('\nInstallation cancelled.\n'));
58
+ process.exit(1);
59
+ },
53
60
  });
54
61
  projectName = answer.projectName;
55
62
  }
56
63
  // Validate project name
57
64
  if (!validation.projectNamePattern.test(projectName)) {
58
- console.log(chalk.red(`❌ ${validation.projectNameError}\n`));
65
+ console.log(chalk.red(`${validation.projectNameError}\n`));
59
66
  process.exit(1);
60
67
  }
61
68
  if (validation.reservedNames.includes(projectName)) {
62
- console.log(chalk.red(`❌ "${projectName}" is a reserved name. Please choose a different name.\n`));
69
+ console.log(chalk.red(`"${projectName}" is a reserved name. Please choose a different name.\n`));
63
70
  process.exit(1);
64
71
  }
65
72
  // Check if directory already exists
66
73
  if (fs.existsSync(projectName)) {
67
- console.log(chalk.red(`❌ Directory "${projectName}" already exists.\n`));
74
+ console.log(chalk.red(`Directory "${projectName}" already exists.\n`));
68
75
  process.exit(1);
69
76
  }
70
77
  try {
@@ -72,7 +79,7 @@ Documentation: ${config.docsUrl}
72
79
  const selectedTemplate = await selectTemplate(branch, template);
73
80
  // Show the selected template name with branch if specified
74
81
  const branchInfo = branch ? chalk.gray(` (branch: ${branch})`) : '';
75
- console.log(chalk.blue.bold(`\n🚀 Create ${selectedTemplate.name}`) + branchInfo + '\n');
82
+ console.log(`${chalk.blue.bold(`\nCreate ${selectedTemplate.name}`) + branchInfo}\n`);
76
83
  // Step 2: Download template from GitHub (or copy from local path)
77
84
  await downloadTemplate(projectName, selectedTemplate.repository, localTemplates);
78
85
  // Step 3: Read template configuration
@@ -81,10 +88,14 @@ Documentation: ${config.docsUrl}
81
88
  const packageManager = await selectPackageManager(packageManagerOverride ?? templateConfig.packageManager, nonInteractive);
82
89
  // Step 5: Prompt user for configuration
83
90
  const answers = await promptUser(projectName, templateConfig, nonInteractive);
91
+ // Inject package-manager metadata so templates can reference it via {{PM}}, {{PM_RUN}}, {{PM_VERSION}}
92
+ answers.PM = packageManager;
93
+ answers.PM_RUN = `${packageManager} run`;
94
+ answers.PM_VERSION = execSync(`${packageManager} --version`, { encoding: 'utf8' }).trim();
84
95
  // Step 5: Replace variables in files
85
96
  replaceVariables(projectName, templateConfig, answers);
86
97
  // Step 6: Adjust package.json (name and workspace dependencies)
87
- adjustPackageJson(projectName, answers, dev);
98
+ adjustPackageJson(projectName, answers, dev, packageManager);
88
99
  // Step 7: Handle conditional removes
89
100
  if (templateConfig.conditionalRemove) {
90
101
  handleConditionalRemoves(projectName, templateConfig, answers);
@@ -93,12 +104,37 @@ Documentation: ${config.docsUrl}
93
104
  renameFiles(projectName, templateConfig);
94
105
  // Step 9: Remove meta files
95
106
  removeMetaFiles(projectName, templateConfig);
96
- // Step 9: Run pre-install hooks (if any) - e.g., CLI authentication for private registries
107
+ // Step 9b: Full scaffold overlay examples/ onto src/ (opt-in via --full).
108
+ // The default scaffold is intentionally minimal; --full installs the working
109
+ // example features and populated tool-server collections.
110
+ const applyExamplesScript = `${projectName}/scripts/apply-examples.mjs`;
111
+ if (full) {
112
+ if (fs.existsSync(applyExamplesScript)) {
113
+ console.log(chalk.blue('Applying full scaffold (examples)...\n'));
114
+ execSync('node scripts/apply-examples.mjs', { cwd: projectName, stdio: 'inherit' });
115
+ }
116
+ else {
117
+ console.log(chalk.yellow('--full requested but scripts/apply-examples.mjs is missing; skipping.\n'));
118
+ }
119
+ }
120
+ // Step 9c: Content app scaffold — overlay an opinionated app-owned content
121
+ // model, interactions, process, UI routes, and setup/exercise scripts.
122
+ const applyContentAppScript = `${projectName}/scripts/apply-content-app.mjs`;
123
+ if (contentApp) {
124
+ if (fs.existsSync(applyContentAppScript)) {
125
+ console.log(chalk.blue('Applying content app scaffold...\n'));
126
+ execSync('node scripts/apply-content-app.mjs', { cwd: projectName, stdio: 'inherit' });
127
+ }
128
+ else {
129
+ console.log(chalk.yellow('--content-app requested but scripts/apply-content-app.mjs is missing; skipping.\n'));
130
+ }
131
+ }
132
+ // Step 10: Run pre-install hooks (if any) - e.g., CLI authentication for private registries
97
133
  let skipDependencyInstall = false;
98
134
  if (templateConfig.preInstall) {
99
135
  const preInstallSuccess = await runPreInstallHooks(projectName, templateConfig.preInstall, packageManager, nonInteractive);
100
136
  if (!preInstallSuccess) {
101
- console.log(chalk.yellow('⚠️ Pre-install hooks failed. Skipping dependency installation.\n'));
137
+ console.log(chalk.yellow('Pre-install hooks failed. Skipping dependency installation.\n'));
102
138
  console.log(chalk.gray('You can install dependencies manually after resolving the issue:\n'));
103
139
  console.log(chalk.gray(` cd ${projectName}`));
104
140
  console.log(chalk.gray(` ${packageManager} install\n`));
@@ -106,6 +142,13 @@ Documentation: ${config.docsUrl}
106
142
  }
107
143
  }
108
144
  // Step 10: Install dependencies
145
+ if (skipInstall) {
146
+ console.log(chalk.yellow('Skipping dependency installation (--skip-install).\n'));
147
+ console.log(chalk.gray('You can install dependencies manually when needed:\n'));
148
+ console.log(chalk.gray(` cd ${projectName}`));
149
+ console.log(chalk.gray(` ${packageManager} install\n`));
150
+ skipDependencyInstall = true;
151
+ }
109
152
  if (!skipDependencyInstall) {
110
153
  await installDependencies(projectName, packageManager);
111
154
  }
@@ -114,21 +157,25 @@ Documentation: ${config.docsUrl}
114
157
  await runPostInstallHooks(projectName, templateConfig.postInstall, packageManager, nonInteractive);
115
158
  }
116
159
  // Step 12: Success!
117
- showSuccess(projectName, packageManager, selectedTemplate.name, selectedTemplate.repository);
160
+ showSuccess(projectName, packageManager, selectedTemplate.name, selectedTemplate.repository, contentApp);
118
161
  }
119
162
  catch (error) {
120
- console.log(chalk.red(`\n❌ Installation failed: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
163
+ console.log(chalk.red(`\nInstallation failed: ${error instanceof Error ? error.message : 'Unknown error'}\n`));
121
164
  process.exit(1);
122
165
  }
123
166
  }
124
167
  /**
125
168
  * Show success message
126
169
  */
127
- function showSuccess(projectName, packageManager, templateName, repository) {
128
- console.log(chalk.green.bold('Project created successfully!\n'));
170
+ function showSuccess(projectName, packageManager, templateName, repository, contentApp) {
171
+ console.log(chalk.green.bold('Project created successfully!\n'));
129
172
  console.log(chalk.gray('Next steps:\n'));
130
173
  console.log(chalk.cyan(` cd ${projectName}`));
131
- console.log(chalk.cyan(` ${packageManager} dev`));
174
+ console.log(chalk.cyan(` ${packageManager} run dev`));
175
+ if (contentApp) {
176
+ console.log(chalk.cyan(` VERTESIA_TOKEN="$(vertesia auth token)" ${packageManager} run seed:content`));
177
+ console.log(chalk.cyan(` VERTESIA_TOKEN="$(vertesia auth token)" ${packageManager} run exercise:content`));
178
+ }
132
179
  console.log();
133
180
  console.log(chalk.gray(`Documentation: ${config.docsUrl}`));
134
181
  console.log(chalk.gray(`Template: ${templateName}`));
@@ -136,7 +183,7 @@ function showSuccess(projectName, packageManager, templateName, repository) {
136
183
  }
137
184
  // Run the installer
138
185
  main().catch((error) => {
139
- console.error(chalk.red(`\n❌ Fatal error: ${error.message}\n`));
186
+ console.error(chalk.red(`\nFatal error: ${error.message}\n`));
140
187
  process.exit(1);
141
188
  });
142
189
  //# sourceMappingURL=index.js.map
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
+ /**
2
+ * Package manager detection and selection
3
+ */
4
+ export declare function buildPackageManagerEnv(packageManager: string): NodeJS.ProcessEnv;
1
5
  /**
2
6
  * Detect available package managers and let user choose
3
7
  * Returns the selected package manager ('pnpm' or 'npm')
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,KAAK,EAAE,cAAc,UAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDzH;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAapG"}
1
+ {"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAQhF;AAeD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACtC,oBAAoB,CAAC,EAAE,MAAM,GAAG,KAAK,EACrC,cAAc,UAAQ,GACvB,OAAO,CAAC,MAAM,CAAC,CAqDjB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAcpG"}
@@ -1,17 +1,22 @@
1
1
  /**
2
2
  * Package manager detection and selection
3
3
  */
4
- import { execSync } from 'child_process';
5
- import prompts from 'prompts';
4
+ import { execSync } from 'node:child_process';
6
5
  import chalk from 'chalk';
6
+ import prompts from 'prompts';
7
+ export function buildPackageManagerEnv(packageManager) {
8
+ const env = { ...process.env };
9
+ if (packageManager === 'pnpm' && !env.pnpm_config_registry && env.npm_config_registry) {
10
+ env.pnpm_config_registry = env.npm_config_registry;
11
+ }
12
+ return env;
13
+ }
7
14
  /**
8
15
  * Check if a command exists on the system (cross-platform)
9
16
  */
10
17
  function commandExists(command) {
11
18
  try {
12
- const checkCommand = process.platform === 'win32'
13
- ? `where ${command}`
14
- : `which ${command}`;
19
+ const checkCommand = process.platform === 'win32' ? `where ${command}` : `which ${command}`;
15
20
  execSync(checkCommand, { stdio: 'ignore' });
16
21
  return true;
17
22
  }
@@ -51,20 +56,20 @@ export async function selectPackageManager(forcedPackageManager, nonInteractive
51
56
  return 'pnpm';
52
57
  }
53
58
  // Both are installed - let user choose
54
- console.log(chalk.blue('📦 Package Manager\n'));
59
+ console.log(chalk.blue('Package Manager\n'));
55
60
  const response = await prompts({
56
61
  type: 'select',
57
62
  name: 'packageManager',
58
63
  message: 'Which package manager would you like to use?',
59
64
  choices: [
60
65
  { title: 'pnpm (recommended)', value: 'pnpm' },
61
- { title: 'npm', value: 'npm' }
66
+ { title: 'npm', value: 'npm' },
62
67
  ],
63
- initial: 0
68
+ initial: 0,
64
69
  }, {
65
70
  onCancel: () => {
66
71
  throw new Error('Installation cancelled by user');
67
- }
72
+ },
68
73
  });
69
74
  console.log();
70
75
  return response.packageManager;
@@ -73,12 +78,13 @@ export async function selectPackageManager(forcedPackageManager, nonInteractive
73
78
  * Install dependencies using the specified package manager
74
79
  */
75
80
  export async function installDependencies(projectName, packageManager) {
76
- console.log(chalk.blue('📦 Installing dependencies...\n'));
81
+ console.log(chalk.blue('Installing dependencies...\n'));
77
82
  console.log(chalk.gray(` Using: ${packageManager}\n`));
78
83
  try {
79
84
  execSync(`${packageManager} install`, {
80
85
  cwd: projectName,
81
86
  stdio: 'inherit',
87
+ env: buildPackageManagerEnv(packageManager),
82
88
  });
83
89
  console.log();
84
90
  }
@@ -1 +1 @@
1
- {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../src/package-manager.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,7 @@
1
- import { PostInstallConfig, PreInstallConfig } from './template-config.js';
1
+ /**
2
+ * Install hooks for running commands before/after project creation
3
+ */
4
+ import type { PostInstallConfig, PreInstallConfig } from './template-config.js';
2
5
  /**
3
6
  * Run pre-install hooks (before npm install)
4
7
  * Returns true if all required hooks succeeded, false otherwise
@@ -1 +1 @@
1
- {"version":3,"file":"post-install.d.ts","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAwJ3E;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,MAAM,EACtB,cAAc,UAAQ,GACrB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,MAAM,EACtB,cAAc,UAAQ,GACrB,OAAO,CAAC,IAAI,CAAC,CAEf"}
1
+ {"version":3,"file":"post-install.d.ts","sourceRoot":"","sources":["../src/post-install.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAuJhF;;;GAGG;AACH,wBAAsB,kBAAkB,CACpC,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,gBAAgB,EAC5B,cAAc,EAAE,MAAM,EACtB,cAAc,UAAQ,GACvB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACrC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,iBAAiB,EAC9B,cAAc,EAAE,MAAM,EACtB,cAAc,UAAQ,GACvB,OAAO,CAAC,IAAI,CAAC,CAEf"}
@@ -1,15 +1,16 @@
1
1
  /**
2
2
  * Install hooks for running commands before/after project creation
3
3
  */
4
+ import { spawn, spawnSync } from 'node:child_process';
4
5
  import chalk from 'chalk';
5
- import { spawn, spawnSync } from 'child_process';
6
6
  import prompts from 'prompts';
7
+ import { buildPackageManagerEnv } from './package-manager.js';
7
8
  /**
8
9
  * Check if a command exists in PATH
9
10
  */
10
11
  function commandExists(command) {
11
12
  const result = spawnSync(process.platform === 'win32' ? 'where' : 'which', [command], {
12
- stdio: 'ignore'
13
+ stdio: 'ignore',
13
14
  });
14
15
  return result.status === 0;
15
16
  }
@@ -17,27 +18,26 @@ function commandExists(command) {
17
18
  * Install a global npm package
18
19
  */
19
20
  async function installGlobalPackage(packageName, packageManager) {
20
- console.log(chalk.blue(`📦 Installing ${packageName}...\n`));
21
+ console.log(chalk.blue(`Installing ${packageName}...\n`));
21
22
  return new Promise((resolve) => {
22
- const args = packageManager === 'npm'
23
- ? ['install', '-g', packageName]
24
- : ['add', '-g', packageName];
23
+ const args = packageManager === 'npm' ? ['install', '-g', packageName] : ['add', '-g', packageName];
25
24
  const child = spawn(packageManager, args, {
26
25
  stdio: 'inherit',
27
- shell: true
26
+ shell: true,
27
+ env: buildPackageManagerEnv(packageManager),
28
28
  });
29
29
  child.on('close', (code) => {
30
30
  if (code === 0) {
31
- console.log(chalk.green(` ${packageName} installed successfully\n`));
31
+ console.log(chalk.green(` ${packageName} installed successfully\n`));
32
32
  resolve(true);
33
33
  }
34
34
  else {
35
- console.log(chalk.yellow(` ⚠️ Failed to install ${packageName}\n`));
35
+ console.log(chalk.yellow(` Failed to install ${packageName}\n`));
36
36
  resolve(false);
37
37
  }
38
38
  });
39
39
  child.on('error', () => {
40
- console.log(chalk.yellow(` ⚠️ Failed to install ${packageName}\n`));
40
+ console.log(chalk.yellow(` Failed to install ${packageName}\n`));
41
41
  resolve(false);
42
42
  });
43
43
  });
@@ -53,7 +53,7 @@ async function runCommand(command, cwd) {
53
53
  const child = spawn('npx', ['--yes', ...command.split(' ')], {
54
54
  stdio: 'inherit',
55
55
  shell: true,
56
- cwd
56
+ cwd,
57
57
  });
58
58
  child.on('close', (code) => {
59
59
  resolve(code === 0);
@@ -71,7 +71,7 @@ async function runInstallHooks(projectName, config, packageManager, phase, nonIn
71
71
  return true;
72
72
  }
73
73
  const phaseLabel = phase === 'pre' ? 'pre-install' : 'post-install';
74
- console.log(chalk.blue(`🔧 Running ${phaseLabel} hooks...\n`));
74
+ console.log(chalk.blue(`Running ${phaseLabel} hooks...\n`));
75
75
  // Check and install CLI package if needed
76
76
  if (config.cliPackage) {
77
77
  // Extract the CLI binary name from the package (e.g., @vertesia/cli -> vertesia)
@@ -85,19 +85,19 @@ async function runInstallHooks(projectName, config, packageManager, phase, nonIn
85
85
  type: 'confirm',
86
86
  name: 'installCli',
87
87
  message: `The ${config.cliPackage} package is required. Do you want to install it globally?`,
88
- initial: true
88
+ initial: true,
89
89
  });
90
90
  installCli = response.installCli;
91
91
  }
92
92
  if (installCli) {
93
93
  const installed = await installGlobalPackage(config.cliPackage, packageManager);
94
94
  if (!installed) {
95
- console.log(chalk.yellow(` ⚠️ Skipping ${phaseLabel} commands that require the CLI\n`));
95
+ console.log(chalk.yellow(` Skipping ${phaseLabel} commands that require the CLI\n`));
96
96
  return false;
97
97
  }
98
98
  }
99
99
  else {
100
- console.log(chalk.yellow(` ⚠️ Skipping ${phaseLabel} commands that require the CLI\n`));
100
+ console.log(chalk.yellow(` Skipping ${phaseLabel} commands that require the CLI\n`));
101
101
  return false;
102
102
  }
103
103
  }
@@ -110,20 +110,20 @@ async function runInstallHooks(projectName, config, packageManager, phase, nonIn
110
110
  type: 'confirm',
111
111
  name: 'proceed',
112
112
  message: promptMessage,
113
- initial: true
113
+ initial: true,
114
114
  });
115
115
  if (!proceed) {
116
- console.log(chalk.gray(` ⏭️ Skipped: ${cmd.name}\n`));
116
+ console.log(chalk.gray(` Skipped: ${cmd.name}\n`));
117
117
  continue;
118
118
  }
119
119
  }
120
120
  console.log(chalk.gray(` Running: ${cmd.name}...`));
121
121
  const success = await runCommand(cmd.command, projectName);
122
122
  if (success) {
123
- console.log(chalk.green(` ${cmd.name} completed\n`));
123
+ console.log(chalk.green(` ${cmd.name} completed\n`));
124
124
  }
125
125
  else {
126
- console.log(chalk.yellow(` ⚠️ ${cmd.name} failed (you can run it manually later)\n`));
126
+ console.log(chalk.yellow(` ${cmd.name} failed (you can run it manually later)\n`));
127
127
  // For pre-install, a failure is critical - return false to skip dependency installation
128
128
  if (phase === 'pre') {
129
129
  return false;