{"id":19314,"library":"babel-preset-moon","title":"babel-preset-moon","description":"A modern Babel preset for tooling development from the moonrepo ecosystem. Current stable version is 3.1.4, updated regularly with Babel releases. It configures the env preset for the current Node.js version, enables TypeScript, native async/await, and supports React, Solid, and JSX runtimes. Converts __DEV__/__PROD__/__TEST__ to process.env checks and wraps invariant() in conditionals. Not intended for web apps or package building — use Packemon instead. Ships TypeScript types, requires Node >=18.12.0 and @babel/core >=7.0.0.","status":"active","version":"3.1.4","language":"javascript","source_language":"en","source_url":"ssh://git@github.com/moonrepo/dev","tags":["javascript","babel-preset","moon","node","env","typescript","react"],"install":[{"cmd":"npm install babel-preset-moon","lang":"bash","label":"npm"},{"cmd":"yarn add babel-preset-moon","lang":"bash","label":"yarn"},{"cmd":"pnpm add babel-preset-moon","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency; the preset requires Babel core to function.","package":"@babel/core","optional":false}],"imports":[{"note":"Use string reference in babel.config.js; requiring the module directly is unnecessary and may cause issues.","wrong":"module.exports = { presets: [require('babel-preset-moon')] };","symbol":"default preset","correct":"module.exports = { presets: ['moon'] };"},{"note":"Options must be passed as a tuple: [presetName, options].","wrong":"module.exports = { presets: ['moon', { decorators: true }] };","symbol":"preset with options","correct":"module.exports = { presets: [['moon', { decorators: true }]] };"},{"note":"Babel config files support ESM; use string reference for presets, not direct imports.","wrong":"import babelPresetMoon from 'babel-preset-moon'; export default { presets: [babelPresetMoon] };","symbol":"ESM import","correct":"export default { presets: ['moon'] };"}],"quickstart":{"code":"// Install: yarn add --dev babel-preset-moon @babel/core\n// babel.config.js\nmodule.exports = {\n  presets: [['moon', { react: 'automatic', decorators: false }]],\n};\n\n// Example usage with Node.js ESM:\n// Run: node --experimental-vm-modules -e \"import('./src/index.js')\"","lang":"javascript","description":"Shows how to install, configure babel-preset-moon with React automatic runtime, and an example usage comment."},"warnings":[{"fix":"Use Packemon (https://packemon.dev) for building packages or web applications.","message":"babel-preset-moon is intended for tooling development only, not for web apps or package building.","severity":"gotcha","affected_versions":"all"},{"fix":"Leave modules as false for ESM-friendly output; set to 'commonjs' if CJS required.","message":"The 'modules' option defaults to false (auto), but setting it to true may break ESM output.","severity":"deprecated","affected_versions":">=3.0.0"},{"fix":"Be aware that loose mode changes semantics; test your code thoroughly.","message":"Enabling decorators (decorators: true) forces Babel into loose mode, which may affect output compatibility.","severity":"gotcha","affected_versions":"all"},{"fix":"Upgrade Node to >=18.12.0.","message":"Requires Node >=18.12.0; older Node versions will cause errors.","severity":"breaking","affected_versions":">=3.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"yarn add --dev @babel/core","cause":"@babel/core is a peer dependency not installed.","error":"Error: Cannot find module '@babel/core'"},{"fix":"yarn add --dev babel-preset-moon","cause":"babel-preset-moon is not installed or not in node_modules.","error":"Error: [BABEL] unknown preset \"moon\""},{"fix":"Add { decorators: true } to preset options.","cause":"Decorators option not set but decorators used in code.","error":"Support for the experimental syntax 'decorators' isn't currently enabled"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}