techor
Version:
Author technology like a top leader
43 lines (40 loc) • 1.37 kB
JavaScript
import log from '@techor/log';
import { trimNewlines } from 'trim-newlines';
const formatFrame = (target, color)=>{
const frameLines = target.frame.split('\n');
return frameLines.map((line, index)=>{
if (target.loc.line - 1 === index) {
return log.chalk.white(line);
}
if (target.loc.line === index) {
// 如果错误行与当前行匹配,添加箭头指向错误列
return line.replace('^', log.chalk[color]('^'));
}
return log.chalk.dim(line);
}).join('\n');
};
function logRollupWarning(warning) {
console.log('');
log.warn(warning.message);
if (warning.frame) {
console.log('');
const formattedFrame = formatFrame(warning, 'red');
console.log(trimNewlines(formattedFrame));
}
if (warning.loc) {
console.log('');
console.log(`at ${log.chalk.cyan(`${warning.loc.file}:${warning.loc.line}:${warning.loc.column}`)}`);
}
}
function logRollupError(error) {
log(error);
if (error.frame) {
const formattedFrame = formatFrame(error, 'red');
console.log(trimNewlines(formattedFrame));
}
if (error.loc) {
console.log('');
console.log(`at ${log.chalk.cyan(`${error.loc.file}:${error.loc.line}:${error.loc.column}`)}`);
}
}
export { logRollupError, logRollupWarning };