https://github.com/inqnuam/esbuild-plugin-sixsixsix-killer
Remove bloc of code when 'if' statement meets 666 condition
https://github.com/inqnuam/esbuild-plugin-sixsixsix-killer
Last synced: 3 months ago
JSON representation
Remove bloc of code when 'if' statement meets 666 condition
- Host: GitHub
- URL: https://github.com/inqnuam/esbuild-plugin-sixsixsix-killer
- Owner: Inqnuam
- Created: 2022-09-11T22:09:22.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2022-12-13T21:16:11.000Z (over 2 years ago)
- Last Synced: 2025-03-10T20:47:16.951Z (3 months ago)
- Language: TypeScript
- Size: 20.5 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 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
```bash
yarn add -D esbuild-plugin-sixsixsix-killer
# or
npm i -D esbuild-plugin-sixsixsix-killer
```Add `SixSixSixKiller` to your esbuild plugin list.
```js
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](playground/index.ts) for more examples and behavior info.
Launch `yarn test` or `npm run test` and play with [playground/index.ts](playground/index.ts) then check the [playground/output/index.js](playground/index.ts) content.```js
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:
```js
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`.
```js
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);
```