index
检查端口
编写一些脚手架,或者本地试调服务的时候经常需要临时开启一个服务器,此函数用来确认一个安全无被占用的端口,
import { get } from "request"
/**
* @Description - 检查输入的端口是否被占用,返回一个最近的可用端口
*
* @param {number} port - {description}
*
* @returns { number } - {description}
*
*/
async function checkPort(port: number): Promise<number> {
return new Promise<number>(resolve => {
const timer: NodeJS.Timer = setInterval(() => {
const url = `http://localhost:${port}`;
get(url, res => {
// console.log("res: ", res);
// 当前端口已存在,修改端口
console.log(`[${port}] 端口已被占用,尝试新端口`);
port++;
}).on("error", err => {
console.log(`[${port}] 可以使用`);
clearInterval(timer);
resolve(port);
});
}, 300);
});
}
checkPort(8081).then(port => {
console.log("可用端口 port: ", port);
});
执行shell
命令
require("child_process").spawn
const util = require("util");
const spawn = require("child_process").spawn;
const readline = require("readline");
let runner = spawn(config.python, [config.script, options], {
encoding: "utf-8",
windowsHide: true,
shell: process.platform === "win32",
stdio: [
0, // 使用父进程的 stdin 用于子进程。
"ipc", // 把子进程的 stdout 通过管道传到父进程 。
"ipc", // 把子进程的 stderr 定向到一个文件。
],
});
runner.stdout.on("data", async (data) => {
console.log("stdout: " + data);
console.log("设置123123", typeof data);
});
runner.on("close", (code) => {
console.log("close");
});
require("child_process").exec
import { promisify } from "util";
import child_process from "child_process";
const exec = promisify(child_process.exec);
const Commands = ["npm", "-v"];
export const Shell = async (
commands,
options = { encoding: "utf-8", windowsHide: true }
) => {
commands = commands.join(" ");
try {
const { stdout, stderr } = await exec(commands, options);
if (stdout) {
const res = stdout.trim();
return { sucess: true, res };
}
if (stderr) {
const err = stderr.toString();
return { sucess: false, err };
}
} catch (e) {
return { success: false, err: e.toString() };
}
};
检查操作系统类型
var detectPlatform = function (url) {
switch (process.platform) {
case "darwin": //unix 系统内核
console.log('darwin ');
break;
case "win32": //windows 系统内核
console.log('win32');
break;
}
};
console.log(detectPlatform())
复制到粘贴板
import child_process from "child_process";
export const copyToPaste = data => {
switch (process.platform) {
case "darwin":
//unix 系统内核
child_process.exec("pbcopy").stdin.end(data);
break;
case "win32":
//windows 系统内核
child_process.exec("clip").stdin.end(data);
break;
default:
// Linux
child_process.exec("xclip").stdin.end(data);
}
};
copyToPaste("ccvvbbbb");
执行时间统计
console.time('test');
// ....执行一些东西
console.timeEnd('test');