diff options
author | 2021-07-07 16:31:42 -0500 | |
---|---|---|
committer | 2021-07-07 16:31:42 -0500 | |
commit | ff89a6a7a6cb4020d282f79589712402110c6351 (patch) | |
tree | f14dc898e1cdb3521a559c52225321edfd5ea140 /packages/create-astro/src/index.ts | |
parent | bcf715df7a0604813d3569dfae35a6f7c55ac381 (diff) | |
download | astro-ff89a6a7a6cb4020d282f79589712402110c6351.tar.gz astro-ff89a6a7a6cb4020d282f79589712402110c6351.tar.zst astro-ff89a6a7a6cb4020d282f79589712402110c6351.zip |
fix: make create-astro component injection less brittle (#623)
Diffstat (limited to '')
-rw-r--r-- | packages/create-astro/src/index.ts | 32 |
1 files changed, 8 insertions, 24 deletions
diff --git a/packages/create-astro/src/index.ts b/packages/create-astro/src/index.ts index 73410d6e3..36ad1934b 100644 --- a/packages/create-astro/src/index.ts +++ b/packages/create-astro/src/index.ts @@ -159,30 +159,14 @@ export async function main() { const pageFileLoc = path.resolve(path.join(cwd, 'src', 'pages', 'index.astro')); const content = (await fs.promises.readFile(pageFileLoc)).toString(); - const lines = content.split('\n'); - const indent = ' '; - const doc = `\n<!-- - - Use imported Framework Components directly in your markup! - - - - Note: by default, components are NOT interactive on the client. - - The \`:visible\` directive tells Astro to make it interactive. - - - - See https://github.com/snowpackjs/astro/blob/main/docs/core-concepts/component-hydration.md - --> -`; - lines.splice( - 41, - 0, - importStatements.length > 0 - ? doc - .split('\n') - .map((ln) => `${indent}${ln}`) - .join('\n') - : '', - ...components.map((ln) => `${indent}${ln}`) - ); - lines.splice(3, 0, importStatements.length > 0 ? `// Framework Component Imports` : '', ...importStatements); - await fs.promises.writeFile(pageFileLoc, lines.join('\n')); + const newContent = content + .replace(/^(\s*)\/\* ASTRO\:COMPONENT_IMPORTS \*\//gm, (_, indent) => { + return indent + importStatements.join('\n'); + }) + .replace(/^(\s*)<!-- ASTRO:COMPONENT_MARKUP -->/gm, (_, indent) => { + return components.map(ln => indent + ln).join('\n'); + }); + await fs.promises.writeFile(pageFileLoc, newContent); } console.log(bold(green('✔') + ' Done!')); |