pwa-create
Version:
A progressive web app stater template creator with various platform options
120 lines (118 loc) • 4.02 kB
JavaScript
;
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);
});