1.1.1 • Published 1 year ago

esbuild-plugin-sixsixsix-killer v1.1.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

SixSixSixKiller

Motivation

Sometimes we need to eliminate some part of our code when it is build for production but we need it in local developement.
We can achieve that by a standart conditionnal expression like if(process.env.LOCAL) {} else {}.
To reduce code size and cpu usage in production this esbuild plugin allows you to remove some part of code when 666 condition is satisfied.

Supports

Syntax:

  • if statements (if(666){...})
  • conditionnal expressions (const someVar = 666 ? "local text": "production text")
  • binary expressions (666 && console.log("something"))

File extensions:

  • JavaScript (.js .mjs .cjs .jsx)
  • TypeScript (.ts .tsx)

Usage

install the plugin with your favorite package manager

yarn add -D esbuild-plugin-sixsixsix-killer
# or
npm i -D esbuild-plugin-sixsixsix-killer

Add SixSixSixKiller to your esbuild plugin list.

const esbuild = require("esbuild");
const { SixSixSixKiller } = require("esbuild-plugin-sixsixsix-killer");

const esBuildConfig = {
  bundle: true,
  plugins: [process.env.NODE_ENV == "production" && SixSixSixKiller()],
  entryPoints: ["./index.ts"],
  outdir: "dist",
};

esbuild.build(esBuildConfig);

Then simply add an if(666) condition in your code and let SixSixKiller to remove it when the plugin is applied during build phase.

Examples:
see playground for more examples and behavior info.
Launch yarn test or npm run test and play with playground/index.ts then check the playground/output/index.js content.

let API_LINK = "https://myserver.com";

if (666) {
  API_LINK = "http://localhost3000";
  console.log("This block will be removed by SixSixSixKiller");
} else if (666) {
  console.log(API_LINK);
  console.log("this block will be removed too");
} else if (anotherConditiion) {
  console.log("This will not be removed. It will become if(anotherConditiion) {...}");
} else {
  console.log("This one too will not be removed");
}

const anotherExample = 666 ? "drop me" : "text in production";

// .tsx .jsx
666 && console.log("This will be removed by SixSixSixKiller");

output:

let API_LINK = "https://myserver.com";

if (anotherConditiion) {
  console.log("This will not be removed. It will become if(anotherConditiion) {...}");
} else {
  console.log("This one too will not be removed");
}

const anotherExample = "text in production";

Customization

If you are not happy about the 666 condition you can change the value by any integer > 0 like 911.

const esbuild = require("esbuild");
const { SixSixSixKiller } = require("esbuild-plugin-sixsixsix-killer");

const esBuildConfig = {
  bundle: true,
  plugins: [process.env.NODE_ENV == "production" && SixSixSixKiller({ killCode: 911 })],
  entryPoints: ["./index.ts"],
  outdir: "dist",
};

esbuild.build(esBuildConfig);
1.1.1

1 year ago

1.1.0

2 years ago

1.0.0

2 years ago