UNPKG

knip-it-test

Version:

A CLI tool to identify redundant code with knip

78 lines (71 loc) 1.9 kB
#!/usr/bin/env node import inquirer from "inquirer"; import { execa } from "execa"; import fs from "fs/promises"; async function main() { const defaults = { fileExtensions: [ "src/**/*.tsx", "src/**/*.ts", "src/**/*.jsx", "src/**/*.js", ], entry: "['src/index.tsx']", packageManager: "yarn", }; try { const answers = await inquirer.prompt([ { type: "input", name: "fileExtensions", message: `List of file extensions used: `, default: defaults.fileExtensions, }, { type: "input", name: "entry", message: `Specify the entry:`, default: defaults.entry, }, { type: "input", name: "packageManager", message: `Package manager of choice (npm/yarn):`, default: defaults.packageManager, }, ]); console.log("Installing knip"); try { switch (answers.packageManager) { case "npm": await execa("npm", ["i", "knip"]); break; case "yarn": default: await execa("yarn", ["add", "knip"]); } } catch (e) { console.log("package manager switch failed", e); } await fs.writeFile( "knip.js", `const config = {entry:${answers.entry}, project:${answers.fileExtensions}}; export default config;` ); console.log("Running the library with the configuration..."); await execa(answers.packageManager, ["knip"]); console.log("Uninstalling knip..."); switch (answers.packageManager) { case "npm": await execa("npm", ["uninstall", "knip"]); break; case "yarn": await execa("yarn", ["remove", "knip"]); default: } await fs.rm("knip.js"); console.log("CLI program finished successfully."); } catch (error) { console.error("Error:", error); } } main();