UNPKG

ssr-hook

Version:

Server-Side Rendering hook for your React projects.

72 lines (71 loc) 2.97 kB
#!/usr/bin/env node "use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var path_1 = require("path"); var child_process_1 = require("child_process"); var fs_1 = require("fs"); var yargs_1 = __importDefault(require("yargs")); var helpers_1 = require("yargs/helpers"); var version = JSON.parse((0, fs_1.readFileSync)((0, path_1.resolve)(__dirname, "package.json"), "utf-8")).version.version; var argv = (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv)) .usage('\nSSR hook - Server-Site Rendering hook for React') .help('help').alias('help', 'h') .version('version', version).alias('version', 'v') .options({ init: { alias: 'i', type: "string", description: "<project name> Input project name", requiresArg: true, }, }) .parse(); var name = argv === null || argv === void 0 ? void 0 : argv.init; if (typeof name !== "string" || !name.trim()) { console.log("Missing project name!"); process.exit(1); } name = name.trim(); var nameSlug = slugify(name); var cwd = (0, path_1.resolve)(process.cwd()); var path = (0, path_1.resolve)(cwd, nameSlug); if ((0, fs_1.existsSync)(path)) { console.log("Folder / Project ".concat(nameSlug, " already exists!")); process.exit(1); } console.log("\nCreating project ".concat(name, "...")); (0, fs_1.mkdirSync)(path); console.log("\nCopy init files..."); (0, fs_1.cpSync)((0, path_1.resolve)(__dirname, "init"), path, { recursive: true }); console.log("\nSetting project name..."); changeName("package.json", nameSlug); changeName("README.md", name); changeName("src/site.webmanifest", name); changeName("src/pages/Item.tsx", name); changeName("src/pages/Items.tsx", name); changeName("src/pages/NotFound.tsx", name); console.log("\nInstalling dependencies..."); (0, child_process_1.execSync)("cd " + path + " && npm install", { stdio: "inherit" }); console.log("\nCreating project ".concat(name, " id done!\nGo to the project: \n$ cd ").concat(nameSlug, "\n\nRun development server:\n$ npm run dev\nOpen http://localhost:1234 in your browser.\n\nBuild project:\n$ npm run build\n\nRun production server:\n$ npm start\n\n\nTell your developer friends about RRS-hook ;)\n")); // ---------------------- helpers ---------------------- function slugify(text) { return text .toString() .normalize('NFD') .replace(/[\u0300-\u036f]/g, '') .replace(/([A-Z])/g, ' $1') .toLowerCase() .trim() .replace(/\s+/g, '-') .replace(/[^\w-]+/g, '') .replace(/--+/g, '-'); } function changeName(fileName, name) { var pathFile = (0, path_1.resolve)(path, fileName); var file = (0, fs_1.readFileSync)(pathFile, "utf-8"); var fileChanged = file.replaceAll("__NAME__", name); (0, fs_1.writeFileSync)(pathFile, fileChanged); }