@babel/node
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
babel-node es una CLI que funciona exactamente igual que la CLI de Node.js, con el beneficio adicional de compilar con presets y plugins de Babel antes de ejecutarla.
Instalación
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/core @babel/node
yarn add --dev @babel/core @babel/node
pnpm add --save-dev @babel/core @babel/node
bun add --dev @babel/core @babel/node
No está destinado para uso en producción
No deberías usar babel-node en producción. Es innecesariamente pesado, con alto consumo de memoria debido a que la caché se almacena en memoria. Además, siempre experimentarás penalización en el rendimiento de arranque ya que toda la aplicación debe compilarse sobre la marcha.
Consulta el ejemplo de servidor Node.js con Babel para ver cómo usar Babel en despliegues de producción.
La carga de módulos estilo ES6 puede no funcionar correctamente
Debido a limitaciones técnicas, la carga de módulos estilo ES6 no está completamente soportada en un babel-node REPL.
Babel incluye una segunda CLI que funciona exactamente igual que la CLI de Node.js, con la diferencia de que compila código ES6 antes de ejecutarlo.
Inicia un REPL (Read-Eval-Print-Loop).
Debes instalar @babel/node y @babel/core antes de usar npx babel-node, de lo contrario npx instalará la versión heredada obsoleta de babel-node 6.x.
npx babel-node
Si prefieres no instalar @babel/node y @babel/core, puedes instalarlos sobre la marcha:
npx -p @babel/core -p @babel/node babel-node
Evalúa código.
npx babel-node -e "class Test { }"
Compila y ejecuta test.js.
npx babel-node test
Usa rlwrap para obtener un REPL con historial de comandos
rlwrap npx babel-node
En algunas plataformas (como OSX), pueden requerirse argumentos adicionales para que rlwrap funcione correctamente, ej:
NODE_NO_READLINE=1 rlwrap --always-readline npx babel-node
Uso
babel-node [options] [ -e script | [--] script.js ] [arguments]
Cuando los argumentos del script de usuario tienen nombres que entran en conflicto con opciones de node, se puede usar un doble guión antes del nombre del script para resolver ambigüedades:
npx babel-node --inspect --presets @babel/preset-env -- script.js --inspect
Opciones
| Option | Default | Description |
|---|---|---|
-e, --eval [script] | Evaluate script | |
-p, --print | Evaluate script and print result | |
-i, --ignore [regex] | node_modules | Ignore all files that match this regex when using the require hook. If both -i and -o are omitted, files outside the current working directory are also ignored. |
-o, --only [regex] | current working directory | Only include (and exclude all other) files that match this regex when using the require hook. If both -i and -o are omitted, files outside the current working directory are also ignored. |
-x, --extensions | ".js",".jsx",".es6",".es","cjs" | List of extensions to hook into |
--presets | [] | Comma-separated list of presets (a set of plugins) to load and use. |
--plugins | [] | Comma-separated list of plugins to load and use. |
--config-file [path] | [] | Path to the babel config file to use. Defaults to working directory babel.config.json or babel.config.js. The following options in config files are not supported: ignore, only. |
--env-name [name] | [] | The name of the 'env' to use when loading configs and plugins. Defaults to the value of BABEL_ENV, or else NODE_ENV, or else 'development'. |