UNPKG

react-fa-picker

Version:

A reusable React Icon Picker component, bundled with its own Tailwind CSS build.

93 lines (78 loc) โ€ข 2.32 kB
#!/usr/bin/env node /** * scripts/release.js */ import { exec as _exec } from "child_process"; import { promisify } from "util"; import fs from "fs"; import path from "path"; import readline from "readline"; const exec = promisify(_exec); async function prompt(question) { const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); return new Promise((resolve) => rl.question(question, (ans) => { rl.close(); resolve(ans.trim()); }), ); } async function main() { const pkgPath = path.resolve(process.cwd(), "package.json"); const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8")); const name = pkg.name; // 1. Clean prior build console.log("๐Ÿงน Cleaning dist folder..."); await exec("rm -rf dist"); // 2. Re-build console.log("๐Ÿ”จ Running build..."); await exec("npm run build"); // 3. Fetch latest published version let remoteVersion = null; try { const { stdout } = await exec(`npm view ${name} version`); remoteVersion = stdout.trim(); console.log(`\nโœ… Latest published version: ${remoteVersion}\n`); } catch { console.log( `\nโ„น๏ธ No published version found for ${name} (first publish?).\n`, ); } // 4. Show Git log since last tag (or full log) if (remoteVersion) { const tag = `v${remoteVersion}`; let logOutput; try { await exec(`git rev-parse ${tag}`); const { stdout: log } = await exec(`git log ${tag}..HEAD --oneline`); logOutput = log; console.log(`๐Ÿ“ Changes since ${tag}:\n${logOutput}`); } catch { const { stdout: log } = await exec(`git log --oneline`); logOutput = log; console.log(`๐Ÿ“ Full Git log:\n${logOutput}`); } } // 5. Prompt for bump & publish const answer = await prompt( "\nProceed with patch bump & npm publish? (y/N) ", ); if (answer.toLowerCase() !== "y") { console.log("โŒ Aborting release."); process.exit(0); } // 6. Bump patch version console.log("\nโฌ†๏ธ Bumping patch version..."); await exec("npm version patch --no-git-tag-version"); // 7. Publish console.log("๐Ÿš€ Publishing to npm..."); await exec("npm publish"); console.log("\n๐ŸŽ‰ Release complete!"); } main().catch((err) => { console.error(err); process.exit(1); });