From e1ead95c1e5b885ee2b981977795e01d5f555337 Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 20 Nov 2025 16:23:42 +0800 Subject: [PATCH 1/2] refactor: replace packageManager with templateParameters for dynamic placeholders --- src/index.ts | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/index.ts b/src/index.ts index e44f43f..0d61d36 100644 --- a/src/index.ts +++ b/src/index.ts @@ -205,6 +205,7 @@ export async function create({ const cwd = process.cwd(); const pkgInfo = pkgFromUserAgent(process.env.npm_config_user_agent); const packageManager = pkgInfo ? pkgInfo.name : 'npm'; + const templateParameters = { packageManager }; // No version provided, read from package.json if (!version) { @@ -264,14 +265,14 @@ export async function create({ to: distFolder, version, skipFiles, - packageManager, + templateParameters, }); copyFolder({ from: srcFolder, to: distFolder, version, packageName, - packageManager, + templateParameters, skipFiles, }); @@ -296,7 +297,7 @@ export async function create({ to: distFolder, version, skipFiles, - packageManager, + templateParameters, isMergePackageJson: true, }); @@ -310,7 +311,7 @@ export async function create({ to: distFolder, version, skipFiles, - packageManager, + templateParameters, isMergePackageJson: true, }); @@ -330,7 +331,7 @@ export async function create({ const agentsPath = path.join(distFolder, 'AGENTS.md'); fs.writeFileSync( agentsPath, - `${replacePlaceholder(mergedAgents, packageManager)}\n`, + `${replacePlaceholder(mergedAgents, { packageManager })}\n`, ); } @@ -392,8 +393,19 @@ export function mergePackageJson(targetPackage: string, extraPackage: string) { const isMarkdown = (file: string) => file.endsWith('.md') || file.endsWith('.mdx'); -const replacePlaceholder = (content: string, packageManager: string) => - content.replace(/{{ packageManager }}/g, packageManager); +const replacePlaceholder = ( + content: string, + templateParameters: Record, +) => { + let result = content; + for (const key of Object.keys(templateParameters)) { + result = result.replace( + new RegExp(`{{ ${key} }}`, 'g'), + templateParameters[key], + ); + } + return result; +}; /** * Copy files from one folder to another. @@ -409,7 +421,7 @@ export function copyFolder({ to, version, packageName, - packageManager, + templateParameters, isMergePackageJson, skipFiles = [], }: { @@ -417,7 +429,7 @@ export function copyFolder({ to: string; version?: string | Record; packageName?: string; - packageManager: string; + templateParameters?: Record; isMergePackageJson?: boolean; skipFiles?: string[]; }) { @@ -445,7 +457,7 @@ export function copyFolder({ copyFolder({ from: srcFile, to: distFile, - packageManager, + templateParameters, version, skipFiles, }); @@ -461,9 +473,12 @@ export function copyFolder({ } else { fs.copyFileSync(srcFile, distFile); - if (isMarkdown(distFile)) { + if (templateParameters && isMarkdown(distFile)) { const content = fs.readFileSync(distFile, 'utf-8'); - fs.writeFileSync(distFile, replacePlaceholder(content, packageManager)); + fs.writeFileSync( + distFile, + replacePlaceholder(content, templateParameters), + ); } } } From add2ccefb6bb59aeee8c407bb834c1e799aa8683 Mon Sep 17 00:00:00 2001 From: neverland Date: Thu, 20 Nov 2025 16:33:03 +0800 Subject: [PATCH 2/2] Update src/index.ts Co-authored-by: Timeless0911 <50201324+Timeless0911@users.noreply.github.com> --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 0d61d36..79814cd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -331,7 +331,7 @@ export async function create({ const agentsPath = path.join(distFolder, 'AGENTS.md'); fs.writeFileSync( agentsPath, - `${replacePlaceholder(mergedAgents, { packageManager })}\n`, + `${replacePlaceholder(mergedAgents, templateParameters)}\n`, ); }