Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/figma/esbuild-runner
⚡️ Super-fast on-the-fly transpilation of modern JS, TypeScript and JSX using esbuild
https://github.com/figma/esbuild-runner
Last synced: about 2 months ago
JSON representation
⚡️ Super-fast on-the-fly transpilation of modern JS, TypeScript and JSX using esbuild
- Host: GitHub
- URL: https://github.com/figma/esbuild-runner
- Owner: figma
- License: apache-2.0
- Fork: true (folke/esbuild-runner)
- Created: 2022-02-16T18:25:03.000Z (almost 3 years ago)
- Default Branch: figma
- Last Pushed: 2023-03-01T10:52:36.000Z (over 1 year ago)
- Last Synced: 2024-09-25T07:02:23.463Z (about 2 months ago)
- Homepage: https://www.npmjs.com/package/esbuild-runner
- Size: 204 KB
- Stars: 2
- Watchers: 1
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# :zap: Esbuild Runner (`esr`)
Super-fast on-the-fly transpilation of modern JS, TypeScript and JSX using [esbuild](https://github.com/evanw/esbuild).
**esr** makes it easy to run arbitrary code or tests without needing to **build** your whole project. It's a great way to improve your development workflow.
## ✨ Usage
The easiest way to use **esbuild-runner** is to install it globally and use the included `esr` binary.
```shell
$ esr hello-world.ts
```Alternatively, you can _require_ **esbuild-runner** within any nodejs process to include realtime transpilation:
```shell
$ node -r esbuild-runner/register hello-world.ts
```In order to use **esbuild-runner** with Jest, you need to configure a [Jest transform](https://jestjs.io/docs/en/configuration.html#transform-objectstring-pathtotransformer--pathtotransformer-object) in your `jest.config.js`
```js
module.exports = {
transform: {
"\\.ts$": "esbuild-runner/jest",
},
}
```VSCode Debugging
```JSON
{
"version": "0.2.0",
"configurations": [
{
"name": "Debug with esbuild-runner",
"program": "${workspaceFolder}/hello-world.ts",
"runtimeArgs": [
"-r",
"esbuild-runner/register"
],
"request": "launch",
"sourceMaps": true,
"skipFiles": [
"/**"
],
"type": "pwa-node"
}
]
}
```## ⚙️ Configuration
`esr` provides two different ways to transpile your code:
- **bundling** _(default)_: this transpiles the script and all its dependencies in typically one invocation of **esbuild**. Dependencies defined in `package.json` or `node_modules` will never be transpiled. Running `esr` will **always** transpile the code. No caching is used.
- **transform** _(`--cache`)_: this method will invoke **esbuild** for **every source file**, but will cache the result. This means that the initial run will be slower, but after that, only changed source files will be transpiled.```shell
$ bin/esr.js --help
Usage: esr [options] [file-options]--cache Transform on a file per file basis and cache code
--clearCache Clear transform cache
--help|-h Display this help message```
To customize the options passed to esbuild, you can create an `esbuild-runner.config.js` file in the current directory or one of the ancestor directories.
```js
// example esbuild-runner.config.js
module.exports = {
type: "bundle", // bundle or transform (see description above)
esbuild: {
// Any esbuild build or transform options go here
target: "esnext",
},
}
```## 📦 Installation
Simply install the **esbuild-runner** npm package using your favorite package manager.
- globally ...
```shell
$ npm install -g esbuild-runner
```- ... or locally in your project
```shell
$ npm add --dev esbuild-runner
```## 👋 Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
## ⚖ License
[Apache 2.0](https://github.com/folke/esbuild-runner/blob/main/LICENSE)