Skip to content

mvasilkov/michikoid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

42 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Michikoid is a TypeScript and JavaScript macro processor

Resources

License

Stars

Watchers

Forks

Releases

No releases published