Package Exports
- swc-plugin-dev-expression
- swc-plugin-dev-expression/swc_plugin_dev_expression.wasm
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (swc-plugin-dev-expression) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
swc-plugin-dev-expression

A port of Facebook's dev-expression Babel plugin.
This plugin gates calls to warning()
behind process.env.NODE_ENV !== 'production'
, modifies calls to invariant()
to hoist the condition outside of the function call, and replaces __DEV__
expressions with a NODE_ENV
check. Most bundlers will then strip these calls out of production code entirely. The transform applied to warning()
and invariant()
is identical to the behaviour of babel-plugin-dev-expression
. The transformation of __DEV__
differs and is only done in more constrained conditions, for ease of implementation. See note below.
invariant
Replaces
invariant(condition, argument, argument);
with
if (!condition) {
if ("production" !== process.env.NODE_ENV) {
invariant(false, argument, argument);
} else {
invariant(false);
}
}
Recommended for use with https://github.com/zertosh/invariant or smaller https://github.com/alexreardon/tiny-invariant.
warning
Replaces
warning(condition, argument, argument);
with
if ("production" !== process.env.NODE_ENV) {
warning(condition, argument, argument);
}
Recommended for use with https://github.com/r3dm/warning or smaller https://github.com/alexreardon/tiny-warning.
__DEV__
Replaces
if (__DEV__) {}
(__DEV__ ? yes() : no());
!__DEV__;
(__DEV__ && true);
(__DEV__ || false);
with
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;
Note: The plugin does not transform every single reference to __DEV__
. It will only make this substitution if __DEV__
is the entire condition in an if
statement or ?
conditional expression, or if __DEV__
is an argument to a logical expression (!
, &&
or ||
). If this limitation poses any problems for your usage, please get in touch.
License
This project is Copyright of Angel Wells, licenced under GPL 3.0 or later.