summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/create-astro/src/index.ts125
-rw-r--r--packages/create-astro/src/templates.ts35
-rw-r--r--packages/create-astro/test/create-astro.test.js8
3 files changed, 85 insertions, 83 deletions
diff --git a/packages/create-astro/src/index.ts b/packages/create-astro/src/index.ts
index 5bf16e490..c42a1942c 100644
--- a/packages/create-astro/src/index.ts
+++ b/packages/create-astro/src/index.ts
@@ -9,79 +9,78 @@ const args = yargs(process.argv);
prompts.override(args);
export function mkdirp(dir: string) {
- try {
- fs.mkdirSync(dir, { recursive: true });
- } catch (e) {
- if (e.code === 'EEXIST') return;
- throw e;
- }
+ try {
+ fs.mkdirSync(dir, { recursive: true });
+ } catch (e) {
+ if (e.code === 'EEXIST') return;
+ throw e;
+ }
}
-
const { version } = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
export async function main() {
- console.log('\n' + bold('Welcome to Astro!') + gray(` (create-astro v${version})`));
- console.log(`If you encounter a problem, visit ${cyan('https://github.com/snowpack/astro/issues')} to search or file a new issue.\n`);
-
- console.log(green(`>`) + gray(` Prepare for liftoff.`));
- console.log(green(`>`) + gray(` Gathering mission details...`));
+ console.log('\n' + bold('Welcome to Astro!') + gray(` (create-astro v${version})`));
+ console.log(`If you encounter a problem, visit ${cyan('https://github.com/snowpack/astro/issues')} to search or file a new issue.\n`);
+
+ console.log(green(`>`) + gray(` Prepare for liftoff.`));
+ console.log(green(`>`) + gray(` Gathering mission details...`));
- const cwd = args['_'][2] || '.';
- if (fs.existsSync(cwd)) {
- if (fs.readdirSync(cwd).length > 0) {
- const response = await prompts({
- type: 'confirm',
- name: 'forceOverwrite',
- message: 'Directory not empty. Continue?',
- initial: false
- });
- if (!response.forceOverwrite) {
- process.exit(1);
- }
- }
- } else {
- mkdirp(cwd);
- }
+ const cwd = args['_'][2] || '.';
+ if (fs.existsSync(cwd)) {
+ if (fs.readdirSync(cwd).length > 0) {
+ const response = await prompts({
+ type: 'confirm',
+ name: 'forceOverwrite',
+ message: 'Directory not empty. Continue?',
+ initial: false,
+ });
+ if (!response.forceOverwrite) {
+ process.exit(1);
+ }
+ }
+ } else {
+ mkdirp(cwd);
+ }
- const options = /** @type {import('./types/internal').Options} */ (await prompts([
- {
- type: 'select',
- name: 'template',
- message: 'Which app template would you like to use?',
- choices: TEMPLATES
- },
- ]));
+ const options = /** @type {import('./types/internal').Options} */ await prompts([
+ {
+ type: 'select',
+ name: 'template',
+ message: 'Which app template would you like to use?',
+ choices: TEMPLATES,
+ },
+ ]);
- const emitter = degit(`snowpackjs/astro/examples/${options.template}`, {
- cache: false,
- force: true,
- verbose: false,
- });
-
- try {
- // emitter.on('info', info => { console.log(info.message) });
- await emitter.clone(cwd);
- } catch (err) {
- // degit is compiled, so the stacktrace is pretty noisy. Just report the message.
- console.error(red(err.message));
- process.exit(1);
- }
+ const emitter = degit(`snowpackjs/astro/examples/${options.template}`, {
+ cache: false,
+ force: true,
+ verbose: false,
+ });
- console.log(bold(green('✔ Copied project files')));
+ try {
+ // emitter.on('info', info => { console.log(info.message) });
+ await emitter.clone(cwd);
+ } catch (err) {
+ // degit is compiled, so the stacktrace is pretty noisy. Just report the message.
+ console.error(red(err.message));
+ process.exit(1);
+ }
- console.log('\nNext steps:');
- let i = 1;
+ console.log(bold(green('✔ Copied project files')));
- const relative = path.relative(process.cwd(), cwd);
- if (relative !== '') {
- console.log(` ${i++}: ${bold(cyan(`cd ${relative}`))}`);
- }
+ console.log('\nNext steps:');
+ let i = 1;
- console.log(` ${i++}: ${bold(cyan('npm install'))} (or pnpm install, yarn, etc)`);
- console.log(` ${i++}: ${bold(cyan('git init && git add -A && git commit -m "Initial commit"'))} (optional step)`);
- console.log(` ${i++}: ${bold(cyan('npm start'))} (or pnpm, yarn, etc)`);
+ const relative = path.relative(process.cwd(), cwd);
+ if (relative !== '') {
+ console.log(` ${i++}: ${bold(cyan(`cd ${relative}`))}`);
+ }
- console.log(`\nTo close the dev server, hit ${bold(cyan('Ctrl-C'))}`);
- console.log('\nStuck? Visit us at https://astro.build/chat\n');
-} \ No newline at end of file
+ console.log(` ${i++}: ${bold(cyan('npm install'))} (or pnpm install, yarn, etc)`);
+ console.log(` ${i++}: ${bold(cyan('git init && git add -A && git commit -m "Initial commit"'))} (optional step)`);
+ console.log(` ${i++}: ${bold(cyan('npm start'))} (or pnpm, yarn, etc)`);
+
+ console.log(`\nTo close the dev server, hit ${bold(cyan('Ctrl-C'))}`);
+ console.log('\nStuck? Visit us at https://astro.build/chat\n');
+}
diff --git a/packages/create-astro/src/templates.ts b/packages/create-astro/src/templates.ts
index 63254a311..dce085314 100644
--- a/packages/create-astro/src/templates.ts
+++ b/packages/create-astro/src/templates.ts
@@ -1,16 +1,19 @@
-export const TEMPLATES = [,
- {
- title: 'Starter Kit (Generic)',
- value: 'starter'
- }, {
- title: 'Blog',
- value: 'blog'
- },
- {
- title: 'Documentation',
- value: 'docs'
- },
- {
- title: 'Portfolio',
- value: 'portfolio'
- }]; \ No newline at end of file
+export const TEMPLATES = [
+ ,
+ {
+ title: 'Starter Kit (Generic)',
+ value: 'starter',
+ },
+ {
+ title: 'Blog',
+ value: 'blog',
+ },
+ {
+ title: 'Documentation',
+ value: 'docs',
+ },
+ {
+ title: 'Portfolio',
+ value: 'portfolio',
+ },
+];
diff --git a/packages/create-astro/test/create-astro.test.js b/packages/create-astro/test/create-astro.test.js
index b83d4f4a6..3b9e4f013 100644
--- a/packages/create-astro/test/create-astro.test.js
+++ b/packages/create-astro/test/create-astro.test.js
@@ -5,7 +5,7 @@ import { suite } from 'uvu';
import execa from 'execa';
import del from 'del';
import * as assert from 'uvu/assert';
-import {TEMPLATES} from '../dist/templates.js';
+import { TEMPLATES } from '../dist/templates.js';
const CreateAstro = suite('npm init astro');
@@ -17,14 +17,14 @@ CreateAstro.before(async () => {
await fs.promises.mkdir(fixturesDir);
});
-for (const {value: template} of TEMPLATES) {
+for (const { value: template } of TEMPLATES) {
// TODO: Unskip once repo is made public. Because the repo is private, the templates can't yet be downloaded.
CreateAstro.skip(template, async () => {
const testDirectory = path.join(fixturesDir, template);
const { stdout } = await execa('../../create-astro.mjs', [testDirectory, '--template', template, '--force-overwrite'], { cwd: path.join(cwd, 'fixtures') });
- console.log(stdout);
- // test: path should formatted as './{dirName}'
+ console.log(stdout);
+ // test: path should formatted as './{dirName}'
assert.not.match(stdout, '././');
const DOES_HAVE = ['.gitignore', 'package.json', 'public', 'src'];