UNPKG

phenomic

Version:

Modern website generator based on the React and Webpack ecosystem.

74 lines (61 loc) 1.86 kB
import { join } from "path" import color from "chalk" import fs from "fs-promise" import globby from "globby" import { prompt } from "inquirer" import { version as phenomicVersion } from "../../../../package.json" import template from "../../../../themes/phenomic-theme-base/package.json" import { plainLog as log } from "../../../_utils/log" import questions, { defaultTestAnswers } from "./questions" const themePath = join(__dirname, "../../../../themes/phenomic-theme-base") export default async function setup(argv) { const cwd = process.cwd() const testMode = argv.test log("Note: All values can be adjusted later.") try { const answers = testMode ? defaultTestAnswers : await prompt(questions) const { name, homepage, twitter, repository, ...phenomic } = answers const devDependencies = { ...template.devDependencies, ...!testMode && { phenomic: `^${ phenomicVersion }`, }, } const pkg = { ...template, name, homepage, phenomic, twitter, repository, devDependencies, } await fs.writeJson(join(cwd, "package.json"), pkg) log("`package.json` generated") const files = globby.sync( [ "*", // node_modules is excluded because can be present during tests // (but will never be in public package) "!node_modules", // already generated "!package.json", // we assume it's up to the user "!yarn.lock", ], { dot: true, cwd: themePath } ) await Promise.all(files.map((file) => fs.copy( join(themePath, file), join(cwd, file) ))) log("Base theme installed") log( "Project ready. Only one `npm install` and you are good to go!", "success" ) } catch (err) { console.error(color.red(err)) process.exit(1) } }