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.ts39
-rw-r--r--packages/create-astro/src/messages.ts80
2 files changed, 77 insertions, 42 deletions
diff --git a/packages/create-astro/src/index.ts b/packages/create-astro/src/index.ts
index 78036716f..2c9da9d66 100644
--- a/packages/create-astro/src/index.ts
+++ b/packages/create-astro/src/index.ts
@@ -1,20 +1,28 @@
/* eslint no-console: 'off' */
+import { color, generateProjectName, label, say } from '@astrojs/cli-kit';
+import { random } from '@astrojs/cli-kit/utils';
import { assign, parse, stringify } from 'comment-json';
-import { downloadTemplate } from 'giget';
import { execa, execaCommand } from 'execa';
import fs from 'fs';
-import { say, label, color, generateProjectName } from '@astrojs/cli-kit';
-import { random } from '@astrojs/cli-kit/utils';
-import { bold, dim, green, red, reset, yellow } from 'kleur/colors';
+import { downloadTemplate } from 'giget';
+import { bold, dim, green, reset, yellow } from 'kleur/colors';
import ora from 'ora';
import path from 'path';
import prompts from 'prompts';
import detectPackageManager from 'which-pm-runs';
import yargs from 'yargs-parser';
import { loadWithRocketGradient, rocketAscii } from './gradient.js';
-import { defaultLogLevel, logger } from './logger.js';
+import { logger } from './logger.js';
+import {
+ banner,
+ getName,
+ getVersion,
+ info,
+ nextSteps,
+ typescriptByDefault,
+ welcome,
+} from './messages.js';
import { TEMPLATES } from './templates.js';
-import { getName, getVersion, welcome, banner, typescriptByDefault, nextSteps, info } from './messages.js';
// NOTE: In the v7.x version of npm, the default behavior of `npm init` was changed
// to no longer require `--` to pass args and instead pass `--` directly to us. This
@@ -83,9 +91,15 @@ export async function main() {
logger.debug('Verbose logging turned on');
if (!args.skipHouston) {
await say([
- ['Welcome', 'to', label('astro', color.bgGreen, color.black), color.green(`v${version}`) + ',', `${username}!`],
+ [
+ 'Welcome',
+ 'to',
+ label('astro', color.bgGreen, color.black),
+ color.green(`v${version}`) + ',',
+ `${username}!`,
+ ],
random(welcome),
- ]);
+ ]);
await banner(version);
}
@@ -225,7 +239,7 @@ export async function main() {
installSpinner.text = green('Packages installed!');
installSpinner.succeed();
} else {
- await info('No problem!', 'Remember to install dependencies after setup.')
+ await info('No problem!', 'Remember to install dependencies after setup.');
}
const gitResponse = await prompts(
@@ -251,7 +265,10 @@ export async function main() {
await execaCommand('git init', { cwd });
ora().succeed('Git repository created!');
} else {
- await info('Sounds good!', `You can come back and run ${color.reset(`git init`)}${color.dim(' later.')}`)
+ await info(
+ 'Sounds good!',
+ `You can come back and run ${color.reset(`git init`)}${color.dim(' later.')}`
+ );
}
const tsResponse = await prompts(
@@ -315,7 +332,7 @@ export async function main() {
});
ora().succeed('TypeScript settings applied!');
}
-
+
let projectDir = path.relative(process.cwd(), cwd);
const devCmd = pkgManager === 'npm' ? 'npm run dev' : `${pkgManager} dev`;
await nextSteps({ projectDir, devCmd });
diff --git a/packages/create-astro/src/messages.ts b/packages/create-astro/src/messages.ts
index 395a8b4c6..9a3bee571 100644
--- a/packages/create-astro/src/messages.ts
+++ b/packages/create-astro/src/messages.ts
@@ -1,29 +1,29 @@
/* eslint no-console: 'off' */
-import { exec } from 'node:child_process';
-import { get } from 'node:https';
import { color, label } from '@astrojs/cli-kit';
import { sleep } from '@astrojs/cli-kit/utils';
+import { exec } from 'node:child_process';
+import { get } from 'node:https';
import stripAnsi from 'strip-ansi';
export const welcome = [
- `Let's claim your corner of the internet.`,
- `I'll be your assistant today.`,
- `Let's build something awesome!`,
- `Let's build something great!`,
- `Let's build something fast!`,
- `Let's make the web weird!`,
- `Let's make the web a better place!`,
- `Let's create a new project!`,
- `Let's create something unqiue!`,
- `Time to build a new website.`,
- `Time to build a faster website.`,
- `Time to build a sweet new website.`,
- `We're glad to have you on board.`,
- `Keeping the internet weird since 2021.`,
- `Initiating launch sequence...`,
- `Initiating launch sequence... right... now!`,
- `Awaiting further instructions.`,
-]
+ `Let's claim your corner of the internet.`,
+ `I'll be your assistant today.`,
+ `Let's build something awesome!`,
+ `Let's build something great!`,
+ `Let's build something fast!`,
+ `Let's make the web weird!`,
+ `Let's make the web a better place!`,
+ `Let's create a new project!`,
+ `Let's create something unqiue!`,
+ `Time to build a new website.`,
+ `Time to build a faster website.`,
+ `Time to build a sweet new website.`,
+ `We're glad to have you on board.`,
+ `Keeping the internet weird since 2021.`,
+ `Initiating launch sequence...`,
+ `Initiating launch sequence... right... now!`,
+ `Awaiting further instructions.`,
+];
export function getName() {
return new Promise((resolve) => {
@@ -44,11 +44,10 @@ export function getName() {
let v: string;
export function getVersion() {
return new Promise<string>((resolve) => {
- if (v)
- return resolve(v);
+ if (v) return resolve(v);
get('https://registry.npmjs.org/astro/latest', (res) => {
let body = '';
- res.on('data', chunk => body += chunk);
+ res.on('data', (chunk) => (body += chunk));
res.on('end', () => {
const { version } = JSON.parse(body);
v = version;
@@ -59,7 +58,11 @@ export function getVersion() {
}
export async function banner(version: string) {
- return console.log(`\n${label('astro', color.bgGreen, color.black)} ${color.green(color.bold(`v${version}`))} ${color.bold('Launch sequence initiated.')}\n`);
+ return console.log(
+ `\n${label('astro', color.bgGreen, color.black)} ${color.green(
+ color.bold(`v${version}`)
+ )} ${color.bold('Launch sequence initiated.')}\n`
+ );
}
export async function info(prefix: string, text: string) {
@@ -83,25 +86,40 @@ export async function error(prefix: string, text: string) {
export async function typescriptByDefault() {
await info(`Cool!`, 'Astro comes with TypeScript support enabled by default.');
- console.log(`${' '.repeat(3)}${color.dim(`We'll default to the most relaxed settings for you.`)}`);
+ console.log(
+ `${' '.repeat(3)}${color.dim(`We'll default to the most relaxed settings for you.`)}`
+ );
await sleep(300);
}
-export async function nextSteps({ projectDir, devCmd }: { projectDir: string; devCmd: string; }) {
+export async function nextSteps({ projectDir, devCmd }: { projectDir: string; devCmd: string }) {
const max = process.stdout.columns;
const prefix = max < 80 ? ' ' : ' '.repeat(9);
await sleep(200);
- console.log(`\n ${color.bgCyan(` ${color.black('next')} `)} ${color.bold('Liftoff confirmed. Explore your project!')}`);
+ console.log(
+ `\n ${color.bgCyan(` ${color.black('next')} `)} ${color.bold(
+ 'Liftoff confirmed. Explore your project!'
+ )}`
+ );
await sleep(100);
if (projectDir !== '') {
- const enter = [`\n${prefix}Enter your project directory using`, color.cyan(`cd ./${projectDir}`, '')];
+ const enter = [
+ `\n${prefix}Enter your project directory using`,
+ color.cyan(`cd ./${projectDir}`, ''),
+ ];
const len = enter[0].length + stripAnsi(enter[1]).length;
- console.log(enter.join((len > max) ? '\n' + prefix : ' '));
+ console.log(enter.join(len > max ? '\n' + prefix : ' '));
}
- console.log(`${prefix}Run ${color.cyan(devCmd)} to start the dev server. ${color.cyan('CTRL+C')} to stop.`);
+ console.log(
+ `${prefix}Run ${color.cyan(devCmd)} to start the dev server. ${color.cyan('CTRL+C')} to stop.`
+ );
await sleep(100);
- console.log(`${prefix}Add frameworks like ${color.cyan(`react`)} or ${color.cyan('tailwind')} using ${color.cyan('astro add')}.`);
+ console.log(
+ `${prefix}Add frameworks like ${color.cyan(`react`)} or ${color.cyan(
+ 'tailwind'
+ )} using ${color.cyan('astro add')}.`
+ );
await sleep(100);
console.log(`\n${prefix}Stuck? Join us at ${color.cyan(`https://astro.build/chat`)}`);
await sleep(200);