summaryrefslogtreecommitdiff
path: root/packages/create-astro/src
diff options
context:
space:
mode:
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!'));