Skip to main content

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');