summaryrefslogtreecommitdiff
path: root/packages/create-astro/src
diff options
context:
space:
mode:
authorGravatar Nate Moore <natemoo-re@users.noreply.github.com> 2021-07-07 16:31:42 -0500
committerGravatar GitHub <noreply@github.com> 2021-07-07 16:31:42 -0500
commitff89a6a7a6cb4020d282f79589712402110c6351 (patch)
treef14dc898e1cdb3521a559c52225321edfd5ea140 /packages/create-astro/src
parentbcf715df7a0604813d3569dfae35a6f7c55ac381 (diff)
downloadastro-ff89a6a7a6cb4020d282f79589712402110c6351.tar.gz
astro-ff89a6a7a6cb4020d282f79589712402110c6351.tar.zst
astro-ff89a6a7a6cb4020d282f79589712402110c6351.zip
fix: make create-astro component injection less brittle (#623)
Diffstat (limited to 'packages/create-astro/src')
-rw-r--r--packages/create-astro/src/index.ts32
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!'));