https://github.com/johnie/esbuild-coffeescript
This plugin lets you import CoffeeScript files when bundling with Esbuild
https://github.com/johnie/esbuild-coffeescript
Last synced: 4 months ago
JSON representation
This plugin lets you import CoffeeScript files when bundling with Esbuild
- Host: GitHub
- URL: https://github.com/johnie/esbuild-coffeescript
- Owner: johnie
- Created: 2021-05-02T10:05:09.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2025-08-01T19:12:24.000Z (5 months ago)
- Last Synced: 2025-08-04T21:56:24.424Z (4 months ago)
- Language: TypeScript
- Homepage:
- Size: 165 KB
- Stars: 25
- Watchers: 3
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
- awesome-esbuild - esbuild-coffeescript
README
# esbuild-coffeescript
[](https://github.com/johnie/esbuild-coffeescript/actions/workflows/master.yml)
> This plugin lets you import [CoffeeScript](https://coffeescript.org/) files when bundling with [Esbuild](https://esbuild.github.io/)
## Installation
```
$ npm install --save-dev esbuild-coffeescript
```
## Compatibility
This plugin is tested against Node.js versions 20.x, 22.x, and 24.x.
## Getting Started
`main.coffee`
```coffee
answer = 42
console.log("the answer is #{answer}")
```
`build.js`
```js
import coffeeScriptPlugin from 'esbuild-coffeescript';
import esbuild from 'esbuild';
esbuild.build({
entryPoints: ['main.coffee'],
bundle: true,
outfile: 'out.js',
plugins: [coffeeScriptPlugin()],
}).catch(() => process.exit(1));
```
## Configuration
An object containing configuration options may be passed into the plugin constructor `coffeeScriptPlugin`.
```js
coffeeScriptPlugin({
bare: true,
});
```
The following options are available:
* `options.inlineMap`, `boolean`: if true, output the source map as a base64-encoded string in a comment at the bottom.
* `options.filename`, `string`: the filename to use for the source map. It can include a path (relative or absolute).
* `options.bare`, `boolean`: if true, output without the top-level function safety wrapper.
* `options.header`, `boolean`: if true, output the Generated by CoffeeScript header.
* `options.transpile`, `object`: if set, this must be an object with the options to pass to Babel. See [Transpilation](https://coffeescript.org/#transpilation).
* `options.ast`, `boolean`: if true, return an abstract syntax tree of the input CoffeeScript source code.
* `options.literate`, `boolean`: if true, parses the code as Literate CoffeeScript. This allows you to write CoffeeScript embedded in Markdown, where indented blocks are treated as executable code.
### But CoffeeScript is dead?
While it might seem like it, coffeescript is still downloaded over 1.6 million times every week. Coffeescript is still actively used and widespread, and this plugin provides a great way for these projects to leverage the great esbuild tooling.