webglToy/webpack.plugins.js
rucky e077d3fa4a project init
1.首页微调
2.新增游戏-鉴色
2021-10-12 18:03:44 +08:00

196 lines
6.0 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//引入相关插件
const nodeOs = require('os');
const net = require('net');
let myTools = {
version : '1.0.0',
author : 'rucky',
print : function(){
//打印基本信息
this.nodeConsole({title:'操作系统',content:this.getSystem(),mode:4});
this.nodeConsole({title:'版本',content:nodeOs.release(),mode:1});
this.nodeConsole({title:'IP',content:this.getIP(),mode:1});
},
/**************************/
/*****↓↓↓获取本地IP↓↓↓*****/
/**************************/
getIP : function(){
let interfaces = nodeOs.networkInterfaces(); //通过node获取网络配置列表
let IP = 'localhost';
const ipArr = [];
for(let devName in interfaces){
let iface = interfaces[devName];
for(let i=0;i<iface.length;i++){
let alias = iface[i];
if(alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal){ //已加入网络
// return alias.address
ipArr.push(alias.address)
}
}
}
if (ipArr.length === 1) {
IP = ipArr[0]
} else if (ipArr.length > 0) {
ipArr.forEach((item,index) => {
if(item.indexOf('192.168.1') > -1) {
IP = item
}else{
IP = item;
}
})
if (IP === 'localhost') {
item = ipArr[0]
}
}
return IP;
// example data
// [
// {
// address: 'fe80::f86b:2ce4:610e:cde1',
// netmask: 'ffff:ffff:ffff:ffff::',
// family: 'IPv6',
// mac: '64:00:6a:12:5c:03',
// scopeid: 3,
// internal: false
// },
// {
// address: '192.168.31.28',
// netmask: '255.255.255.0',
// family: 'IPv4',
// mac: '64:00:6a:12:5c:03',
// internal: false
// }
// ]
},
/**************************/
/**↓↓↓检测端口是否被占用↓↓↓***/
/**************************/
portIsOccupied : function(port) {
// 创建服务并监听该端口
var server = net.createServer().listen(port)
server.on('listening', function () { // 执行这块代码说明端口未被占用
server.close() // 关闭服务
// return false
console.log('The port【' + port + '】 is available.') // 控制台输出信息
})
server.on('error', function (err) {
if (err.code === 'EADDRINUSE') { // 端口已经被使用
// return true
console.log('The port【' + port + '】 is occupied, please change other port.')
}
})
},
/**************************/
/***↓↓↓ 获取系统名称 ↓↓↓***/
/**************************/
getSystem:function(){
let system = nodeOs.platform(); //'darwin' mac, 'freebsd' UNIX, 'linux', 'sunos' sunos, 'win32' windows
let _name;
switch(system){
case 'win32':
_name = "windows";
break;
case 'linux':
_name = system;
break;
case 'darwin':
_name = "mac";
break;
default:
_name = "windows";
break;
}
return _name;
},
/**************************/
/***↓↓↓ node Console ↓↓↓***/
/**************************/
nodeConsole:function(param){
let _default = { // 标题
title: 'Rucky',
content: typeof param == 'string'? param : 'Lee', // 内容 如果传入内容为字符串直接赋值给content
mode: 1, // 1-*,2-=,3--,4-<>
maxLen: 27, // 内容最大字节 默认左右各空4个 中间可描述字符19 默认gap / ** / 4个字符
betweenLen:17
};
let opts = Object.assign({}, _default, param );
let getLength = function(str) {
return (str ? str : 'undefined').replace(/[\u0391-\uFFE5]/g,"aa").length; //先把中文替换成两个字节的英文,在计算长度
}
let createSpaceStr = function(len,symbol){
let placeholder = symbol ? symbol: ' ';
let array = [];
for(let i = 0 ; i < len ; i++ ){
if(symbol == '>' && i > len/2)
placeholder = Symbols[5]
array.push(placeholder);
}
return array.join('');
}
let trueLen = getLength(opts.title)+getLength(opts.content);
let messageStr = '';
let gap = []; //' ** '
let extra = opts.maxLen-trueLen;
let startSpace,endSpace;
let topSymbol,bottomSymbol;
let Symbols = ['','*','=','-','>','<'];
// console.error(trueLen)
if(extra >= 0){
topSymbol = bottomSymbol = createSpaceStr(opts.maxLen+opts.betweenLen,Symbols[opts.mode]);
if(extra > 8){ //如果大于8空格 旁边则保留4空格
startSpace = endSpace = createSpaceStr(4);
// console.log(extra)
if(extra >= 12){ //如果大于12空格 则中间加gap
gap = ' '+Symbols[opts.mode]+Symbols[opts.mode]+' ';
startSpace = endSpace = createSpaceStr((extra-4)/2);
endSpace = createSpaceStr(((extra-4)/2)%2 == 0 ? (extra-4)/2: (extra-4)/2-1);
}else{
gap = createSpaceStr((extra-8)/2);
}
}else{
gap = '';
endSpace = createSpaceStr(extra%2 == 0 ? (extra/2) : Math.ceil(extra/2));
}
messageStr = startSpace+param.title+gap+param.content+endSpace;
}else{
topSymbol = bottomSymbol =createSpaceStr(trueLen+opts.betweenLen,Symbols[opts.mode]);
messageStr = opts.title ? (param.title+param.content):param.content;
}
let showTemplate = [
topSymbol+'\n'+'*********'+messageStr+'********\n'+bottomSymbol,
topSymbol+'\n'+'========='+messageStr+'========\n'+bottomSymbol,
topSymbol+'\n'+'---------'+messageStr+'--------\n'+bottomSymbol,
topSymbol+'\n'+'>>>>>>>>>'+messageStr+'<<<<<<<<\n'+bottomSymbol
]
console.log(showTemplate[Number(opts.mode)-1])
}
}
myTools.print();
module.exports = myTools;
/*
* ------------------------------
*
* @author : Rucky
* @cntQQ 344879627
* @info : My local env config
*
* ------------------------------
*/