You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.6 KiB

# rollup-plugin-preprocessor
A Rollup plugin that adds a C-like preprocessor to Javascript.
# Screenshots
![Very useful comparison image (this is a lie)](assets/comparison.png)
# Documentation
## Options
This plugin exports a `preprocess()` plugin function that takes in an options object with the following syntax:
```js
{
//a list of compile-time variables and their values (parsed to an AST, so all JS is valid)
//NOTE: due to this, strings require single quotes around them to parse to String
values: {
EXAMPLE: "'Hello, world!'",
IS_TRUE: 1,
WEBPACK: "demon.summon('modules/webpack')"
},
//a list of comment transformations
transforms: {
//example: this deletes all comments that start with NONPROD in the output AST
NONPROD: (node, parent, idx) => {parent.comments = []}
}
}
```
## Included Directives
This plugin currently includes 3, battle-tested, production-ready directives for any code you may want to use them in.
`#IF comptime_var` - If `comptime_var` evaluates to true, the code from it until the end is included in the output; otherwise, it is ignored.
`#IFNOT comptime_var` - If `comptime_var` evaluates to false, the code from it until the end is included in the output; otherwise, it is ignored.
`#END` - Ends an `#IF`/`#IFNOT` macro.
# Commonly Asked Questions
## Why?
I prefer doing things like this before runtime with compile-time constants, instead of on runtime with JS variables.
## Are you insane?
Yeah, probably.
## Why not just use a Regex?
I'm just #special like that.
## Is this production ready?
No.