babel-plugin-remove-unused-reference
v1.0.3
Published
Babel plugin, remove unused references
Readme
babel-plugin-remove-unused-reference
Description
Babel plugin, remove unused reference.
Supports:
when
const isX = false;, changeconst x = isX ? A : B;->const x = B;when
const isX = false;, changeif (isX) { A } else { B }->{ B }when
false, support(isX && ...),(... && isX)(left ... is normal data type without slide effetcs)support
const x = false ? A : B->const x = Bandif (false) A else B->Bwhen
const isX = true;, changeconst x = isX ? A : B;->const x = A;when
const isX = true;, changeif (isX) { A } else { B }->{ A }when
true, support(isX || ...),(... || isX)(left ... is normal data type without slide effetcs)support
const x = true ? A : B->const x = Aandif (true) A else B->A
Examples
Input:
test(`
// 测试变量 const isX = false 时,条件表达式中 isX 相应逻辑的剔除
const isX = false;
const A = isX ? { a } : {};
const A2 = isX && x && 2 && true && fn() ? { a2 } : {};
const A3 = x && isX ? { a3 } : {};
const A4 = x && 2 && true && '2' && isX ? { a4 } : {};
const A0 = fn() && isX ? {} : { a0 };
`);
test(`
// 测试条件表达式中含有 false 字面量时,条件表达式中相应逻辑的剔除
const A = false ? { a } : {};
const A2 = false && x && 2 && '2' && fn() ? { a2 } : {};
const A3 = x && 2 && true && false ? { a3 } : {};
const A0 = fn() && false ? { a0 } : {};
`);
test(`
// 测试变量 const isX = false 时,if 语句中 isX 相应逻辑的剔除
const isX = false;
if (isX) { a } else {}
if (isX && x && 2 && true && fn()) { a2 } else {}
if (x && 2 && true && '2' && isX) { a3 } else {}
if (fn() && isX) { a0 } else {}
`);
test(`
// 测试条件表达式中含有 false 字面量时,if 语句中相应逻辑的剔除
if (false) { a } else {}
if (false && x && 2 && true && fn()) { a2 } else {}
if (x && 2 && true && '2' && false) { a3 } else {}
if (fn() && false) { a0 } else {}
`);
test(`
// 测试条件表达式中含有 const isX = true 时,条件表达式中 isX 相应逻辑的剔除
const isX = true;
const A = isX ? { } : { a };
const A2 = isX || x || 2 || false || fn() ? { } : { a2 };
const A3 = x || isX ? { } : { a3 };
const A4 = x || 2 || isX || false || '2' ? { } : { a4 };
const A0 = fn() || isX ? { } : { a0 };
`);
test(`
// 测试条件表达式中含有 true 字面量时,条件表达式中相应逻辑的剔除
const A = true ? { } : { a };
const A2 = true || x || 2 || '2' || fn() ? { } : { a2 };
const A3 = x || 2 || false || true || '2' || fn() ? { } : { a3 };
const A0 = fn() || true ? { } : { a0 };
`);
test(`
// 测试条件表达式中含有 const isX = true 时,if 语句中 isX 相应逻辑的剔除
const isX = true;
if (isX) { } else { a }
if (isX || x || 2 || false || fn()) { } else { a2 }
if (x || 2 || false || '2' || isX) { } else { a3 }
if (false) { a4 } else if (true) { } else if (isWeb) { a41 } else { a42 }
if (fn() || isX) { } else { a0 }
`);
test(`
// 测试条件表达式中含有 true 字面量时,if 语句中相应逻辑的剔除
if (true) { } else { a }
if (true || x || 2 || false || fn()) { } else { a2 }
if (x || 2 || false || '2' || true) { } else { a3 }
if (false) { a4 } else if (true) { } else { a41 }
if (false) { a5 } else if (x || 2 || true || false || '2') { } else { a51 }
if (fn() || true) { } else { a0 }
`);output:
> npm run example
> node ./examples/index.js
// 测试变量 const isX = false 时,条件表达式中 isX 相应逻辑的剔除
const isX = false;
const A = {};
const A2 = {};
const A3 = {};
const A4 = {};
const A0 = fn() && isX ? {} : {
a0
};
---------------------------------------
// 测试条件表达式中含有 false 字面量时,条件表达式中相应逻辑的剔除
const A = {};
const A2 = {};
const A3 = {};
const A0 = fn() && false ? {
a0
} : {};
---------------------------------------
// 测试变量 const isX = false 时,if 语句中 isX 相应逻辑的剔除
const isX = false;
{}
{}
{}
if (fn() && isX) {
a0;
} else {}
---------------------------------------
// 测试条件表达式中含有 false 字面量时,if 语句中相应逻辑的剔除
{}
{}
{}
if (fn() && false) {
a0;
} else {}
---------------------------------------
// 测试条件表达式中含有 const isX = true 时,if 语句中 isX 相应逻辑的剔除
const isX = true;
{}
{}
{}
{}
if (fn() || isX) {} else {
a0;
}
---------------------------------------
// 测试条件表达式中含有 true 字面量时,if 语句中相应逻辑的剔除
{}
{}
{}
{}
{}
if (fn() || true) {} else {
a0;
}
---------------------------------------
// 测试条件表达式中含有 const isX = true 时,条件表达式中 isX 相应逻辑的剔除
const isX = true;
const A = {};
const A2 = {};
const A3 = {};
const A4 = {};
const A0 = fn() || isX ? {} : {
a0
};
---------------------------------------
// 测试条件表达式中含有 true 字面量时,条件表达式中相应逻辑的剔除
const A = {};
const A2 = {};
const A3 = {};
const A0 = fn() || true ? {} : {
a0
};
---------------------------------------Usage
npm i babel-plugin-remove-unused-reference
// pnpm add babel-plugin-remove-unused-reference