Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

swc-plugin-dev-expression

Package Overview
Dependencies
Maintainers
1
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

swc-plugin-dev-expression

An swc port of facebook's babel-plugin-dev-expression. Replaces __DEV__, wraps warning and invariant calls.

  • 0.2.11
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

swc-plugin-dev-expression npm Crates.io GitHub

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.

Keywords

FAQs

Package last updated on 30 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc