UNPKG

pwa-create

Version:

A progressive web app stater template creator with various platform options

120 lines (118 loc) 4.02 kB
"use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); // src/index.ts var index_exports = {}; module.exports = __toCommonJS(index_exports); var import_chalk = __toESM(require("chalk")); var import_prompts = __toESM(require("prompts")); var import_degit = __toESM(require("degit")); var import_console = require("console"); var import_execa = require("execa"); var questions = [ { type: "text", name: "projectName", message: "What is your project/app name?", initial: "my-app" }, { type: "select", name: "framework", message: "Choose a framework", instructions: false, onRender(kleur) { this.message = kleur.red("Choose a framework"); }, choices: [ { title: "Vanilla HTML", value: "vanilla-html" }, { title: "React (Typescript)", value: "react-typescript" }, { title: "React (Javascript)", value: "react-javascript" } ] }, { type: "confirm", name: "installDependencies", message: "Install project dependencies after initialize project?", initial: true }, { type: (p) => p == true ? "select" : null, name: "packageManager", message: "Select a package manager", choices: [ { title: "npm", value: "npm" }, { title: "pnpm", value: "pnpm" }, { title: "yarn", value: "yarn" }, { title: "bun", value: "bun" } ] } ]; async function main() { const response = await (0, import_prompts.default)(questions, { onCancel(prompt) { console.log(import_chalk.default.red(prompt.message)); console.log(import_chalk.default.red("\u274C pwa-create canceled \u{1F622}")); } }); const temp = `devusimple/pwa-create/templates/${response.framework}`; const emitter = (0, import_degit.default)(temp, { force: true }); (0, import_console.log)( import_chalk.default.green(` \u{1F503} Scaffolding project into ./${response.projectName}...`) ); await emitter.clone(response.projectName); if (response.installDependencies) { process.chdir(response.projectName); (0, import_console.log)(import_chalk.default.cyan("\n\u{1F4E6} Installing dependencies...\n")); await import_execa.execa`${response.packageManager} install`; (0, import_console.log)(import_chalk.default.green(`\u2705 Project "${response.projectName}" ready!`)); } else { (0, import_console.log)(import_chalk.default.yellow("Done \u2705 now\n")); (0, import_console.log)( import_chalk.default.green(` +---------------------------+ $ cd ${response.projectName} $ ${response.packageManager} install +---------------------------+ `) ); } } main().catch((r) => { console.error(r); process.exit(1); });