Skip to content
/ dynot Public

πŸ¦–βš‘οΈ Boost your Node.js runtime with TypeScript and ESM support!

License

Notifications You must be signed in to change notification settings

nyxb/dynot

Repository files navigation

cover npm version npm downloads bundle License

πŸ¦–βš‘οΈ Boost your Node.js runtime with TypeScript and ESM support!

✨ Features

  • 🌊 Smooth TypeScript and ESM syntax integration
  • πŸ”— Seamless ESM and CommonJS interoperability
  • ⚑ Synchronous API as a require alternative
  • πŸ’ͺ Super lightweight with zero dependencies
  • 🧠 Clever syntax detection to avoid unnecessary transformations
  • πŸ’Ύ CommonJS cache integration
  • πŸ—„οΈ Filesystem transpile hard cache
  • 🏎️ V8 compile cache
  • πŸ” Custom resolve alias

πŸ› οΈ Usage

πŸ“¦ Scripted

const dynotti = require('dynot')(__filename)

dynot('./path/to/file.ts')

You can also pass options as a second argument:

const dynot = require('dynot')(__filename, { debug: true })

πŸ–₯️ CLI

dynot index.ts
# or npx dynot index.ts

πŸ“ Register require hook

node -r dynot/register index.ts

Alternatively, you can register dynot as a require hook programmatically:

const dynot = require('dynot')()

const unregister = dynot.register()

βš™οΈ Options

debug 🐞

  • Type: Boolean
  • Default: false
  • Environment Variable: DYNOT_DEBUG

Enable debug mode to see which files are transpiled

cache πŸ’½

  • Type: Boolean | String
  • Default: true
  • Environment Variable: DYNOT_CACHE

Toggle transpile cache

If set to true, it will use node_modules/.cache/dynot (if exists) or {TMP_DIR}/node-dynot

esmResolve πŸŒ€

  • Type: Boolean | String
  • Default: false
  • Environment Variable: DYNOT_ESM_RESOLVE

Activate esm resolution algorithm to support import condition.

transform πŸ”„

  • Type: Function
  • Default: Babel (lazy loaded)

Specify a transform function. Check src/babel for more details.

sourceMaps πŸ—ΊοΈ

  • Type: Boolean
  • Default false
  • Environment Variable: DYNOT_SOURCE_MAPS

Add inline source map to transformed source for improved debugging.

interopDefault 🧩

  • Type: Boolean
  • Default: false

Return the .default export of a module at the top-level.

alias 🏷️

  • Type: Object
  • Default: -
  • Environment Variable: DYNOT_ALIAS

Define a custom alias map to resolve ids.

nativeModules 🌐

  • Type: Array
  • Default: ['typescript`]
  • Environment Variable: DYNOT_NATIVE_MODULES

Specify a list of modules (within node_modules) to always use native require for them.

transformModules πŸ› οΈ

  • Type: Array
  • Default: []
  • Environment Variable: DYNOT_TRANSFORM_MODULES

List modules (within node_modules) to transform them regardless of syntax.

🌱 Development

πŸ™ Clone this repository πŸ”§ Enable Corepack using corepack enable πŸ“¦ Install dependencies using nyxi πŸ§™ Always right package manager πŸƒ Run nyxr dev πŸƒ Run nyxr dynot ./test/path/to/file.ts

πŸ“œ License

MIT - Made with πŸ’ž