From 718180f39f5335dc43547ff214971bc52f36ee12 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Tue, 11 Apr 2023 21:40:56 +0800 Subject: [PATCH 1/2] feat: if use playwright to add related extension recommendations --- index.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/index.ts b/index.ts index 6f912e1f..af602967 100755 --- a/index.ts +++ b/index.ts @@ -307,7 +307,13 @@ async function init() { const templateDir = path.resolve(templateRoot, templateName) renderTemplate(templateDir, root) } - + const addPlaywrightExtensions = function addPlaywrightExtensions() { + const extensionDir = path.resolve(root, '.vscode/extensions.json') + const json = fs.readFileSync(extensionDir, 'utf-8') + const obj = JSON.parse(json) + obj.recommendations.push('ms-playwright.playwright') + fs.writeFileSync(path.resolve(root, '.vscode/extensions.json'), JSON.stringify(obj, null, 2)) + } // Render base template render('base') @@ -332,6 +338,7 @@ async function init() { } if (needsPlaywright) { render('config/playwright') + addPlaywrightExtensions() } if (needsTypeScript) { render('config/typescript') @@ -447,7 +454,9 @@ async function init() { console.log(`\nDone. Now run:\n`) if (root !== cwd) { const cdProjectName = path.relative(cwd, root) - console.log(` ${bold(green(`cd ${cdProjectName.includes(' ') ? `"${cdProjectName}"` : cdProjectName}`))}`) + console.log( + ` ${bold(green(`cd ${cdProjectName.includes(' ') ? `"${cdProjectName}"` : cdProjectName}`))}` + ) } console.log(` ${bold(green(getCommand(packageManager, 'install')))}`) if (needsPrettier) { From d29309d8ed5c092f66a90466eb70eaa83b4b1408 Mon Sep 17 00:00:00 2001 From: btea <2356281422@qq.com> Date: Thu, 4 May 2023 21:22:21 +0800 Subject: [PATCH 2/2] feat: playwright template add vscode folder --- index.ts | 8 -------- template/config/playwright/.vscode/extensions.json | 3 +++ utils/renderTemplate.ts | 9 +++++++++ 3 files changed, 12 insertions(+), 8 deletions(-) create mode 100644 template/config/playwright/.vscode/extensions.json diff --git a/index.ts b/index.ts index af602967..36997386 100755 --- a/index.ts +++ b/index.ts @@ -307,13 +307,6 @@ async function init() { const templateDir = path.resolve(templateRoot, templateName) renderTemplate(templateDir, root) } - const addPlaywrightExtensions = function addPlaywrightExtensions() { - const extensionDir = path.resolve(root, '.vscode/extensions.json') - const json = fs.readFileSync(extensionDir, 'utf-8') - const obj = JSON.parse(json) - obj.recommendations.push('ms-playwright.playwright') - fs.writeFileSync(path.resolve(root, '.vscode/extensions.json'), JSON.stringify(obj, null, 2)) - } // Render base template render('base') @@ -338,7 +331,6 @@ async function init() { } if (needsPlaywright) { render('config/playwright') - addPlaywrightExtensions() } if (needsTypeScript) { render('config/typescript') diff --git a/template/config/playwright/.vscode/extensions.json b/template/config/playwright/.vscode/extensions.json new file mode 100644 index 00000000..7b3f8bda --- /dev/null +++ b/template/config/playwright/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["ms-playwright.playwright"] +} diff --git a/utils/renderTemplate.ts b/utils/renderTemplate.ts index 529b1f17..bbfe4008 100644 --- a/utils/renderTemplate.ts +++ b/utils/renderTemplate.ts @@ -41,6 +41,15 @@ function renderTemplate(src, dest) { return } + if (filename === 'extensions.json' && fs.existsSync(dest)) { + // merge instead of overwriting + const existing = JSON.parse(fs.readFileSync(dest, 'utf8')) + const newExtensions = JSON.parse(fs.readFileSync(src, 'utf8')) + const extensions = deepMerge(existing, newExtensions) + fs.writeFileSync(dest, JSON.stringify(extensions, null, 2) + '\n') + return + } + if (filename.startsWith('_')) { // rename `_file` to `.file` dest = path.resolve(path.dirname(dest), filename.replace(/^_/, '.'))