compiler.apply(new webpack.ProgressPlugin((percentage, msg) => { //移动光标 readline.clearLine(process.stdout); console.log(' ' + (percentage * 100).toFixed(2) + '%', msg); readline.moveCursor(process.stdout, 0, -1); }));
const render_spinner = (check_spinner, message, i = 1) => { const spinner = '|/-\\'; process.stderr.write('\r'); readline.clearLine(process.stderr, 1); readline.cursorTo(process.stderr, 0); process.stderr.write(`${yellow(spinner[i])} ${message}`); check_spinner.stop = setTimeout(() => { i++; render_spinner(check_spinner, message, i % spinner.length); }, 100); }
var logger = (str, nodate, remove) => { //Custom logger var str = String(str) if (str.toLowerCase().includes("error")) { var str = `\x1b[31m${str}\x1b[0m` } //make errors red in console if (str.toLowerCase().includes("updating")) { var str = `\x1b[33m${str}\x1b[0m` } //make errors red in console if (nodate) { var string = str; } else { var string = `\x1b[96m[${(new Date(Date.now() - (new Date().getTimezoneOffset() * 60000))).toISOString().replace(/T/, ' ').replace(/\..+/, '')}]\x1b[0m ${str}` } if (remove) { readline.clearLine(process.stdout, 0) //0 clears entire line process.stdout.write(`${string}\r`) } else { readline.clearLine(process.stdout, 0) console.log(`${string}`) } fs.appendFileSync('./output.txt', string.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, '') + '\n', err => { //Credit: https://github.com/Filirom1/stripcolorcodes if(err) logger('logger function appendFileSync error: ' + err) }) }
//sets terminal title (thanks: https://stackoverflow.com/a/30360821/12934162) /* ------------ Functions: ------------ */ var logger = (str, nodate, remove) => { //Custom logger var str = String(str) if (str.toLowerCase().includes("error")) { var str = `\x1b[31m${str}\x1b[0m` } if (nodate) { var string = str; } else { //startup messages should have nodate enabled -> filter messages with date when bot is not started var string = `\x1b[96m[${(new Date(Date.now() - (new Date().getTimezoneOffset() * 60000))).toISOString().replace(/T/, ' ').replace(/\..+/, '')}]\x1b[0m ${str}` if (readyafter == 0 && !str.toLowerCase().includes("error") && !str.includes('Logging in... Estimated wait time') && !str.includes("What's new:") && remove !== true) { readyafterlogs.push(string); return; }} if (remove) { readline.clearLine(process.stdout, 0) //0 clears entire line process.stdout.write(`${string}\r`) } else { readline.clearLine(process.stdout, 0) console.log(`${string}`) } fs.appendFileSync('./output.txt', string.replace(/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]/g, '') + '\n', err => { //Regex Credit: https://github.com/Filirom1/stripcolorcodes if(err) logger('logger function appendFileSync error: ' + err) }) }
let message = `>> Completed: ${endMatch[1]} (Took: ${endMatch[3]} ms)` if (process.stdout.isTTY === true) { readline.clearLine(process.stdout, 0) readline.cursorTo(process.stdout, 0)