# caffeine-mc

> Select, configure and extend your to-JavaScript compiler, with arbitrary code, on a per file bases from within the file.

Latest version **3.5.4** (published 2025-11-07) · ISC license · 0 weekly downloads

## Install

```sh
npm install caffeine-mc
pnpm add caffeine-mc
yarn add caffeine-mc
bun add caffeine-mc
```

Provides the command `caf`.

## Health

**Score 45/100 (D)** — status: stable.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

## Facts

| | |
|---|---|
| Version | 3.5.4 |
| Published | 2025-11-07 |
| First published | 2016-10-11 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 13 |
| Unpacked size | 224 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Shane Brinkman-Davis Delamore |
| Maintainers | shanebdavis |

## Links

- npm: https://www.npmjs.com/package/caffeine-mc
- Repository: https://github.com/caffeine-suite/caffeine-suite
- Issues: https:/github.com/caffeine-suite/caffeine-suite/issues
- npm.io page: https://npm.io/package/caffeine-mc

## Dependencies (13)

- [glob](https://npm.io/package/glob.md) ^11
- [colors](https://npm.io/package/colors.md) ^1.1.2
- [cardinal](https://npm.io/package/cardinal.md) ^2.0.0
- [fs-extra](https://npm.io/package/fs-extra.md) ^11.2.0
- [prettier](https://npm.io/package/prettier.md) ^2.8.8
- [commander](https://npm.io/package/commander.md) ^6.2.1
- [loader-utils](https://npm.io/package/loader-utils.md) ^2.0.0
- [caffeine-eight](https://npm.io/package/caffeine-eight.md) ^3.0.5
- [art-class-system](https://npm.io/package/art-class-system.md) ^1.11.16
- [art-standard-lib](https://npm.io/package/art-standard-lib.md) ^1.73.1
- [source-map-support](https://npm.io/package/source-map-support.md) ^0.5.19
- [neptune-namespaces-runtime](https://npm.io/package/neptune-namespaces-runtime.md) ^3.2.8
- [@art-suite/source-root-finder](https://npm.io/package/@art-suite/source-root-finder.md) ^1.0.7

## Recent versions

- 3.5.4 (latest) — 2025-11-07
- 3.5.3 — 2024-08-16
- 3.5.2 — 2024-05-30
- 3.5.1 — 2024-05-30
- 3.5.0 — 2024-05-30
- 3.4.0 — 2021-08-11
- 3.3.2 — 2021-05-16
- 3.3.1 — 2020-11-21
- 3.3.0 — 2020-11-13
- 3.2.0 — 2020-11-09
- 3.1.10 — 2020-11-06
- 3.1.9 — 2020-11-06
- 3.1.8 — 2020-11-06
- 3.1.7 — 2020-11-06
- 3.1.6 — 2020-10-23
- … 56 more at https://npm.io/package/caffeine-mc/versions

## README

![logo](https://raw.githubusercontent.com/wiki/shanebdavis/caffeine-mc/CaffeineMcLogo.png)
# Caffeinated Language Evolution [![Build Status](https://travis-ci.org/shanebdavis/caffeine-mc.svg?branch=master)](https://travis-ci.org/shanebdavis/caffeine-mc)

With CaffeineMC, any language can change *arbitrarily* without breaking existing code. You can select, configure and extend any to-JavaScript compiler, with arbitrary code, on a per-project or per-file basis.

### [CaffeineMC Wiki](https://github.com/shanebdavis/caffeine-mc/wiki)

Go to the [Wiki](https://github.com/shanebdavis/caffeine-mc/wiki) for documentation and more. 

Related: [CaffeineScript Wiki](https://github.com/shanebdavis/caffeine-script/wiki)

### Install

```
npm install caffeine-mc
```

Next: [Get Started](https://github.com/shanebdavis/caffeine-mc/wiki/Get-Started)

### Compatibility

CaffeineMC can work with any to-JavaScript compiler. It works with plain JavaScript, [CoffeeScript](http://coffeescript.org/) and [CaffeineScript](https://github.com/shanebdavis/caffeine-script) out of the box. An example below shows how easy it is to adapt to other compilers or transpilers like [Babel](https://babeljs.io/).

### What is a Meta-Compiler?

It is a compiler for your compiler. CaffeineMC can 'compile' (create) a brand new compiler, on a file-by-file basis. Most the time, though, it is used to select and configure a compiler. For example, see the custom.caf below.

### Why CaffeineMC?

#### Reason 1: Accelerated Language Evolution
When you can change the compiler *programmatically* on a per-file basis, languages can evolve arbitrarily without worrying about breaking existing code. This frees languages to evolve rapidly without constraints.

#### Reason 2: CaffeineMC + CaffeineScript
CaffeineMC really starts to shine when you have a language which is designed to be extensible. [CaffeineScript](https://github.com/shanebdavis/caffeine-script) is a modular programming language designed to take maximum advantage of CaffeineMC's per-project and per-file configurability. (modular-CaffeineScript is coming soon)

#### Reason 3: Custom Source-code 'Views'
Source-code is a "view" into a program's actual semantics. Just like  word-processors or spread sheets let you configure your view on a per-file basis, you should be able to change your code's view, its 'language,' on a per-file basis without affecting other files.

#### Reason 4: Accelerated New Language Development
Focus on writing your new language instead of building all the boiler-plate tools needed to make it useful. CaffeineMC's [caf command-line tool](https://github.com/shanebdavis/caffeine-mc/wiki/caf-Command-Line-Tool), [interactive shell](https://github.com/shanebdavis/caffeine-mc/wiki/Interactive-Shell), [NodeJs-loader](https://github.com/shanebdavis/caffeine-mc/wiki/NodeJs-Loader) and [Webpack-loader](https://github.com/shanebdavis/caffeine-mc/wiki/Webpack-Loader) work for all Caffeine-MC enabled languages. Just create a Caffeine-MC compatible compiler and you get all the standard compiler machinery for free.

---
_Source: https://npm.io/package/caffeine-mc · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
