michikoid
v0.3.4
Published
Michikoid is a TypeScript and JavaScript macro processor, in the sense that it copies its input to the output, expanding macros as it goes.
Downloads
21
Maintainers
Readme
Michikoid
Michikoid is a TypeScript and JavaScript macro processor, in the sense that it copies its input to the output, expanding macros as it goes.
The app is based on the excellent ts-morph library.
Motivation
Michikoid was written to help with code size optimization without sacrificing readability.
Installation
npm install -g michikoid
Usage
Pass a tsconfig.json file to work on an entire project and save changes to a different directory.
michikoid [--enable <features>] --project <tsconfig> <out_dir>
Alternatively, pass a .ts or .js file to handle it with default settings and print to the standard output.
michikoid [--enable <features>] <file>
The default settings are:
{
"compilerOptions": {
"target": "ES2021",
"module": "ES2022"
}
}
Macros
Michikoid understands the following macros:
Alias
The Alias macro replaces all occurrences of a const
identifier with a different identifier.
const value = {n: 255}
const alias = value // .Alias
console.log(alias.n)
// Expands to:
const value = {n: 255}
console.log(value.n)
Inline
The Inline macro takes a const
declaration and inlines it into the output.
const value = 255 // .Inline(1)
console.log(value)
// Expands to:
console.log(255)
InlineExp
The InlineExp macro inlines an assignment expression into the next occurrence of that expression's left-hand side. Can also be spelled as InlineExpLeft.
this.value = 255 // .InlineExp
console.log(this.value)
// Expands to:
console.log(this.value = 255)
InlineExpRight
The InlineExpRight macro variant inlines an assignment expression into the next occurrence of that expression's right-hand side.
this.value = 128 // .InlineExpRight
console.log(128)
// Expands to:
console.log(this.value = 128)
DeadCode
The DeadCode macro deletes the statement it's applied to.
const value = 255
console.log(value) // .DeadCode
// Expands to:
const value = 255