killit
Version:
Simple, fast port killer with zero dependencies
103 lines (99 loc) • 3.1 kB
JavaScript
import { killPort, killPorts } from './index.js';
function parseArgs() {
const args = process.argv.slice(2);
const options = {
ports: [],
protocol: 'tcp',
verbose: false,
help: false,
};
for (let i = 0; i < args.length; i++) {
const arg = args[i];
switch (arg) {
case '-h':
case '--help':
options.help = true;
break;
case '-p':
case '--port':
if (args[i + 1]) {
options.ports.push(...args[i + 1].split(','));
i++;
}
break;
case '-m':
case '--method':
case '--protocol':
if (args[i + 1] && (args[i + 1] === 'tcp' || args[i + 1] === 'udp')) {
options.protocol = args[i + 1];
i++;
}
break;
case '-v':
case '--verbose':
options.verbose = true;
break;
default:
if (!arg.startsWith('-') && /^\d+$/.test(arg)) {
options.ports.push(arg);
}
break;
}
}
return options;
}
function showHelp() {
console.log(`
killit - Kill processes running on specified ports
Usage:
killit <port> [port2] [port3] ...
killit --port <port>
killit --port <port1>,<port2>,<port3>
Options:
-p, --port <port> Port number(s) to kill (comma-separated)
-m, --method <protocol> Protocol: tcp or udp (default: tcp)
-v, --verbose Show detailed output
-h, --help Show this help message
Examples:
killit 3000 Kill process on port 3000
killit 3000 8080 5000 Kill processes on multiple ports
killit --port 3000 Kill process on port 3000
killit --port 3000,8080 Kill processes on ports 3000 and 8080
killit 9000 --method udp Kill UDP process on port 9000
killit 3000 --verbose Kill with verbose output
`);
}
async function main() {
const options = parseArgs();
if (options.help) {
showHelp();
process.exit(0);
}
if (options.ports.length === 0) {
console.error('Error: No port specified\n');
showHelp();
process.exit(1);
}
try {
if (options.ports.length === 1) {
await killPort(options.ports[0], {
protocol: options.protocol,
verbose: options.verbose,
});
console.log(`✓ Killed process on port ${options.ports[0]}`);
}
else {
await killPorts(options.ports, {
protocol: options.protocol,
verbose: options.verbose,
});
console.log(`✓ Killed processes on ports: ${options.ports.join(', ')}`);
}
}
catch (error) {
console.error(`✗ Error: ${error instanceof Error ? error.message : String(error)}`);
process.exit(1);
}
}
main();