# onwarn
类型: |
---|
(warning: RollupWarning, defaultHandler: (warning: string | RollupWarning) => void) => void; |
该选项为一个拦截警告信息的函数。如果不提供,警告将去重并打印到控制台。当在命令行使用 --silent 选项时,该选项是获取警告通知的唯一途径。
该函数接收两个参数:警告对象和默认处理函数。其中,警告对象至少有一个 code 和一个 message 属性,用于控制如何处理不同种类的警告。另外,根据不同的警告类型,警告对象上会有其他的属性。可查看 utils/error.ts 以获得完整的错误和警告列表,以及它们的代码和属性。
// rollup.config.js
export default {
//...,
onwarn(warning, warn) {
// 跳过指定类型的警告
if (warning.code === 'UNUSED_EXTERNAL_IMPORT') return;
// 抛出其他类型的警告
// 使用 Object.assign 拷贝 new Error(warning.message)
// 将使命令行打印额外的信息,如警告位置
// 和帮助 URL。
if (warning.code === 'MISSING_EXPORT')
throw Object.assign(new Error(), warning);
// 使用默认处理函数兜底
warn(warning);
}
};
很多警告还具有 loc 和 frame 属性,它们可以用来定位警告来源:
// rollup.config.js
export default {
...,
onwarn ({ loc, frame, message }) {
if (loc) {
console.warn(`${loc.file} (${loc.line}:${loc.column}) ${message}`);
if (frame) console.warn(frame);
} else {
console.warn(message);
}
}
};