0.3.4 • Published 23 days ago

michikoid v0.3.4

Weekly downloads
-
License
MIT
Repository
github
Last release
23 days ago

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
0.3.4

23 days ago

0.3.3

1 month ago

0.3.2

1 month ago

0.3.1

1 month ago

0.3.0

1 month ago

0.2.0

3 months ago

0.1.2

7 months ago

0.1.1

7 months ago

0.1.0

8 months ago

0.0.6

11 months ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago

0.0.0

1 year ago