diff --git a/bin/next b/bin/next index 81f7d96cfedaa9d87be87f48c7eba3530381e6b1..9004fe257c74415311e9abec0e5a7b4d56df40f1 100755 --- a/bin/next +++ b/bin/next @@ -7,6 +7,7 @@ import { spawn } from 'cross-spawn'; const defaultCommand = 'dev' const commands = new Set([ defaultCommand, + 'init', 'build', 'start' ]) diff --git a/bin/next-init b/bin/next-init new file mode 100755 index 0000000000000000000000000000000000000000..b060e428ac39f872e0cdf202065a343d2e4ad2af --- /dev/null +++ b/bin/next-init @@ -0,0 +1,56 @@ +#!/usr/bin/env node +import { resolve, join, basename } from 'path' +import parseArgs from 'minimist' +import { exists, writeFile, mkdir } from 'mz/fs' + +const argv = parseArgs(process.argv.slice(2), { + alias: { + h: 'help' + }, + boolean: ['h'] +}) + +const dir = resolve(argv._[0] || '.') + +exists(join(dir, 'package.json')) +.then(async present => { + if (basename(dir) === 'pages') { + console.warn('Your root directory is named "pages". This looks suspicious. You probably want to go one directory up.') + return + } + + if (!present) { + await writeFile(join(dir, 'package.json'), basePackage) + } + + if (!await exists(join(dir, 'static'))) { + await mkdir(join(dir, 'static')) + } + + if (!await exists(join(dir, 'pages'))) { + await mkdir(join(dir, 'pages')) + await writeFile(join(dir, 'pages', 'index.js'), basePage) + } +}) +.catch((err) => { + console.error(err) + exit(1) +}) + +const basePackage = `{ + "name": "my-app", + "description": "my app", + "dependencies": { + "next": "latest" + }, + "scripts": { + "dev": "next", + "build": "next build", + "start": "next start" + } +}` + +const basePage =` +import React from 'react' +export default () =>

Hello, world

+`