English | 日本語
A simple CoffeeScript build tool with coffee.config.cjs ☕
Official site: https://milkee.org
Install Milkee:
# global installation
npm i -g milkee
# or local installation
npm i -D milkeeCoffeeScript & @babel/core are required.
Tip
@babel/core is required if options.transpile is true .
# global installation
npm i -g coffeescript @babel/core
# or local installation
npm i -D coffeescript @babel/coreRun -s (--setup) command, generate coffee.config.cjs!
# global
milkee -s
# or local
npx milkee -s/** @type {import('@milkee/d').Config} */
module.exports = {
// The entry point for compilation.
// This can be a single file or a directory (e.g., 'src/' or 'src/app.coffee').
entry: 'src',
// The output for the compiled JavaScript files.
// If 'options.join' is true, this should be a single file path (e.g., 'dist/app.js').
// If 'options.join' is false, this should be a directory (e.g., 'dist').
output: 'dist',
// (Optional) Additional options for the CoffeeScript compiler.
// See `coffee --help` for all available options.
// Web: https://coffeescript.org/annotated-source/command.html
options: {
// The following options are supported:
// bare: false,
// join: false,
// map: false,
// inlineMap: false,
// noHeader: false,
// transpile: false,
// literate: false,
// watch: false,
},
// (Optional) Additional options/plugins for the Milkee builder.
milkee: {
options: {
// Ignore update notifications.
// ignoreUpdate: false,
// Before compiling, reset the directory.
// refresh: false,
// Before compiling, confirm "Do you want to Continue?"
// confirm: false,
// After compiling, copy non-coffee files from entry to output directory. (Only works when options.join is false)
// copy: false,
},
plugins: []
},
};These options are passed directly to the coffee compiler.
| Option | Type | Default | Description |
|---|---|---|---|
bare |
boolean |
false |
compile without a top-level function wrapper |
join |
boolean |
false |
concatenate the source CoffeeScript before compiling |
map |
boolean |
false |
generate source map and save as .js.map files |
inlineMap |
boolean |
false |
generate source map and include it directly in output |
noHeader |
boolean |
false |
suppress the "Generated by" header |
transpile |
boolean |
false |
pipe generated JavaScript through Babel |
literate |
boolean |
false |
treat stdio as literate style coffeescript |
watch |
boolean |
false |
watch scripts for changes and rerun commands |
These options control Milkee's behavior.
| Option | Type | Default | Description |
|---|---|---|---|
ignoreUpdate |
boolean |
false |
Ignore update notifications. |
refresh |
boolean |
false |
Before compiling, reset the output directory. |
confirm |
boolean |
false |
Before compiling, prompt "Do you want to Continue?". |
copy |
boolean |
false |
After compiling, copy non-coffee files from entry to output directory. (Only works when options.join is false) |
You can extend Milkee's functionality by using plugins. Plugins are simple functions that run after each successful compilation, giving you access to the compiled files and configuration.
Example:
const myPlugin = require('./plugins/my-plugin.js');
module.exports = {
// ...
milkee: {
plugins: [
// This call returns the PluginExecutor
myPlugin({ option: 'value' }),
// ...
]
}
}Milkee will automatically read coffee.config.cjs, assemble the command from your options, and start compilation!
# global
milkee
# or local
npx milkeeWant to create your own Milkee plugin? Check out the plugin documentation:

