Closed gezhicui closed 1 month ago
自定义Rule的时候,我想指定超过多少个错误抛出error,否则抛warn
你希望 error 和 warn 是按照自定义 Rule 报错个数来定的?这个好像有些奇怪,因为不同 Rule 的重要性可能不同的。感觉应该是每个 Rule 都拥有自己的规则严重性?
我希望能够在自定义的rule内部自己判断report的错误等级是error还是warn,而不是只能在meta中定义Rule的severity
自定义拓展规则文档中虽然没有描述(考虑到自定义规则使用方式可能未来变动,所以暂时没透出,后续会在文档中说明拓展方式),不过确实如你所说在 meta 中定义,不过这个 meta 中的 severity 就是只针对单个自定义规则而设定的。例如下面的 "check-rule-name" 规则,这个规则的 severity 就是 warn, 这个 meta.severity 用户可以自行定义的。
const CheckRule = defineRule(() => ({
meta: {
category: "bundle",
severity: "Warn",
title: "check-rule-name",
defaultConfig: {
config: 1,
},
},
check(ruleContext) {
// ..
},
}));
export default {
plugin: [
new RsdoctorWebpackPlugin({
linter: {
level: "Error",
extends: [CheckRule],
rules: {
"check-rule-name": [
"on",
{
config: 2,
},
],
},
},
}),
],
};
/** 规则数据 */
interface RuleData<Config = undefined> {
meta: RuleMeta<Config>;
check: CheckCallback<Config>;
}
interface RuleMeta<Config> {
/** 错误标题 */
title: string;
/** 错误等级 */
severity: Severity;
/** 详细文档链接 */
referenceUrl?: string;
/** 默认配置 */
defaultConfig?: Config;
}
感谢回答,但是可能是因为我的描述不够清楚,我们的理解好像有一点偏差,我想表达的意思是,rule的severity是静态的,一开始就需要定死,而我现在希望能够在运行时修改rule的severity,比如说:
export const xxx = defineRule<>(() => ({
meta: {
title,
},
check({ packageGraph, ruleConfig, report }) {
// 在这里我会做一些自定义的产物分析
report({
severity:根据自定义产物分析结果自己决定本规则report的是Warn还是Error,
message: 'xxxx'
})
},
@gezhicui 我明白你的意思了,这个需求合理的,我会先记到 TODO List 中。另外,请问有兴趣参与共建吗,可以尝试来实现这个特性。
感谢 是有兴趣的 直接提pr吗
感谢 是有兴趣的 直接提pr吗
是的 🫶🫶
What problem does this feature solve?
自定义Rule的时候,我想指定超过多少个错误抛出error,否则抛warn,我希望能够在自定义的rule内部自己判断report的错误等级是error还是warn,而不是只能在meta中定义Rule的severity (如果report中没有severity,默认使用meta的severity)
What does the proposed API look like?
是否未来会有这个功能?或有其它满足我的需求的解决方式?希望能够尽快得到回复 谢谢!~