jstransformer-babel
raw JSON → 2.1.0 verified Sat Apr 25 auth: no javascript maintenance
A JSTransformer plugin that wraps Babel for transpiling JavaScript. Current version 2.1.0 supports Babel 6 and is in maintenance mode. The package provides a unified interface through the JSTransformer architecture, enabling render, renderFile, and renderString APIs. Unlike direct Babel usage, it filters unsupported options and supports .babelrc configuration when a filename is provided. Key differentiator: it integrates with the JSTransformer ecosystem (used by Pug, etc.) but does not include presets by default, requiring explicit presets like 'es2015' in Babel 6.
Common errors
error Error: Requires Babel "$BABEL_VERSION", but is loaded with "6.26.3". If you are sure you have a compatible version of Babel, it is likely that you are pulling in different versions of Babel. Try uninstalling all Babel packages and reinstalling them. ↓
cause Incompatible Babel version or multiple Babel installations.
fix
Install compatible Babel version: npm install @babel/core@^7.0.0 (if jstransformer-babel supports Babel 7) or stick to Babel 6.
error Error: Couldn't find preset "env" relative to directory ↓
cause Preset 'env' is not installed.
fix
npm install @babel/preset-env --save-dev
error TypeError: babel.render is not a function ↓
cause Directly requiring jstransformer-babel without wrapping with jstransformer.
fix
Use: const jstransformer = require('jstransformer'); const babel = jstransformer(require('jstransformer-babel'));
Warnings
breaking jstransformer-babel v2 requires explicit presets; no longer defaults to ES2015. ↓
fix Pass an array of presets (e.g., ['env']) or configure .babelrc.
deprecated jstransformer v1 is being replaced by jstransformer v2 which uses a different API. ↓
fix Migrate to jstransformer v2 with updated interface.
gotcha The package only implements 'render'; other methods (renderString, renderFile) are derived but may have edge cases. ↓
fix Test derived methods thoroughly with your Babel options.
gotcha Babel configuration files (.babelrc) only apply when filename is passed to renderFile or renderFileAsync. ↓
fix Use renderFile* or pass { filename: 'example.js' } to render.
Install
npm install jstransformer-babel yarn add jstransformer-babel pnpm add jstransformer-babel Imports
- jstransformer-babel wrong
const babel = require('jstransformer-babel')correctconst babel = require('jstransformer')(require('jstransformer-babel')) - render wrong
babel.render(src, { presets: ['es2015'] })correctbabel.render(src, { presets: ['env'] }) - renderFile wrong
babel.renderFile('input.js', {}, function(err, result) {})correctbabel.renderFile('input.js', function(err, result) {})
Quickstart
const jstransformer = require('jstransformer');
const babel = jstransformer(require('jstransformer-babel'));
const src = `const x = () => 1`;
const result = babel.render(src, {
presets: [['@babel/preset-env', { targets: { node: 'current' } }]]
});
console.log(result.body);