5 个版本
0.2.11 | 2023年1月30日 |
---|---|
0.2.10 | 2023年1月30日 |
0.2.2 | 2022年12月22日 |
0.2.1 | 2022年12月22日 |
0.2.0 | 2022年12月22日 |
#1816 在 解析器实现
18KB
266 行
swc-plugin-dev-expression
Facebook 的 dev-expression Babel 插件 的移植。
此插件将 warning()
调用的访问权限限制在 process.env.NODE_ENV !== 'production'
之下,将 invariant()
调用的条件提升到函数调用之外,并将 __DEV__
表达式替换为 NODE_ENV
检查。大多数打包器将完全从生产代码中删除这些调用。应用于 warning()
和 invariant()
的转换与 babel-plugin-dev-expression
的行为相同。而 __DEV__
的转换不同,且仅在更受限的条件下进行,以简化实现。请参见以下注释。
invariant
替换为
invariant(condition, argument, argument);
使用
if (!condition) {
if ("production" !== process.env.NODE_ENV) {
invariant(false, argument, argument);
} else {
invariant(false);
}
}
建议与 https://github.com/zertosh/invariant 或更小的 https://github.com/alexreardon/tiny-invariant 一起使用。
warning
替换为
warning(condition, argument, argument);
使用
if ("production" !== process.env.NODE_ENV) {
warning(condition, argument, argument);
}
推荐与https://github.com/r3dm/warning或更小的https://github.com/alexreardon/tiny-warning一起使用。
__DEV__
替换为
if (__DEV__) {}
(__DEV__ ? yes() : no());
!__DEV__;
(__DEV__ && true);
(__DEV__ || false);
使用
if(process.env.NODE_ENV !== 'production') {}
(process.env.NODE_ENV !== 'production' ? yes() : no());
!(process.env.NODE_ENV !== 'production');
(process.env.NODE_ENV !== 'production') && true;
(process.env.NODE_ENV !== 'production') || false;
注意:插件不会转换对__DEV__
的每一个引用。只有在__DEV__
是一个if
语句或?
条件表达式中的整个条件,或者__DEV__
是逻辑表达式的参数(!
、&&
或||
)时,才会进行这种替换。如果这种限制对您的使用造成任何问题,请与我们联系。
## 许可 本项目的版权属于Angel Wells,许可协议为GPL 3.0或更高版本。
依赖项
~5–11MB
~142K SLoC