怎么一分钟写一个全局 npm 命令脚本杀死占用端口进程?
- 前端
- 14小时前
- 3热度
- 0评论
一分钟实现全局npm命令脚本杀死占用端口进程
为什么需要端口管理工具?
在Web开发中,80%的前端开发者都遇到过端口冲突问题。当你在终端看到类似"Error: listen EADDRINUSE: address already in use :::8091"的报错时,意味着当前端口已被其他进程占用。传统解决方案需要执行lsof -i :端口号
查询进程ID后手动终止,效率低下且容易出错。
实战:创建全局npm命令脚本
1. 编写核心脚本
创建kill-port.js文件:
```javascript
!/usr/bin/env node
const port = process.argv[2] || 8091;
const exec = require('child_process').exec;
const command = process.platform === 'win32'
? `netstat -ano | findstr :${port}`
: `lsof -i :${port} | grep LISTEN`;
exec(command, (err, stdout) => {
if (err) return console.log('端口未使用');
const pid = stdout.trim().split(/\s+/)[1];
console.log(`\x1b[31m强制终止进程PID: ${pid}\x1b[0m`);
process.platform === 'win32'
? exec(`taskkill /F /PID ${pid}`)
: exec(`kill 到9 ${pid}`);
});
```
2. 全局安装配置
- 创建package.json文件:
{ "name": "kill-port", "version": "1.0.0", "bin": { "kill-port": "kill-port.js" } }
- 执行全局安装命令:
npm install -g .
3. 验证与使用
基础用法:
kill-port 8091 指定端口 kill-port 使用默认8091端口
环境要求:
- Node.js ≥v16.14.1(建议通过PM2管理版本)
- npm ≥7.x
常见问题解决方案
权限问题处理
Linux/macOS系统出现EACCES错误时:
sudo chown -R $(whoami) ~/.npm
环境验证流程
node -v ≥v16.14.1 npm -v ≥7.x pnpm -v 可选(如使用需先设置官方源)
高级应用场景
进程并发控制
参考管道控制原理(来自用户代码示例):
```bash
mkfifo tmp && exec 3<>tmp
for i in {1..2}; do echo $i >&3; done
for i in {1..10}; do
read -u3 id && {
kill-port 8091
echo $id >&3
} &
done
wait && exec 3>&&& rm tmp
```
该模式可实现多进程安全操作,避免重复终止导致的系统异常。
特别提示:生产环境建议结合PM2等进程管理工具,配合自动化脚本实现端口监控与自动释放功能。将本文的kill-port命令与CI/CD流程结合,可提升20%以上的部署效率。