@babel/cli
Babel comes with a built-in CLI which can be used to compile files from the command line.
In addition, various entry point scripts live in the top-level package at @babel/cli/bin. There is a shell-executable utility script, babel-external-helpers.js, and the main Babel cli script, babel.js.
Install
While you can install Babel CLI globally on your machine, it's much better to install it locally project by project.
There are two primary reasons for this.
- Different projects on the same machine can depend on different versions of Babel allowing you to update them individually.
- Not having an implicit dependency on the environment you are working in makes your project far more portable and easier to setup.
We can install Babel CLI locally by running:
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/core @babel/cli
yarn add --dev @babel/core @babel/cli
pnpm add --save-dev @babel/core @babel/cli
bun add --dev @babel/core @babel/cli
If you do not have a package.json, create one before installing. This will ensure proper interaction with the npx command.
After that finishes installing, your package.json file should include:
{
"devDependencies": {
+ "@babel/cli": "^7.0.0",
+ "@babel/core": "^7.0.0"
}
}
Usage
Please install @babel/cli and @babel/core first before npx babel, otherwise npx will install out-of-dated babel 6.x. Other than npx, you can also drop it inside of an npm run script or you may instead execute with the relative path instead. ./node_modules/.bin/babel
npx babel script.js
Print Usage
npx babel --help
Compile Files
Compile the file script.js and output to stdout.
npx babel script.js
# output...
If you would like to output to a file you may use --out-file or -o.
npx babel script.js --out-file script-compiled.js
To compile a file every time that you change it, use the --watch or -w option:
npx babel script.js --watch --out-file script-compiled.js
Compile with Source Maps
Since v7.19.3, if this parameter is not specified, @babel/cli will follow the configuration files.
If you would then like to add a source map file you can use
--source-maps or -s.
npx babel script.js --out-file script-compiled.js --source-maps
Or, if you'd rather have inline source maps, use --source-maps inline instead.
npx babel script.js --out-file script-compiled.js --source-maps inline
Compile Directories
Compile the entire src directory and output it to the lib directory by using either --out-dir or -d. This doesn't overwrite any other files or directories in lib.
npx babel src --out-dir lib
Compile the entire src directory and output it as a single concatenated file.
npx babel src --out-file script-compiled.js
Directories with TypeScript Files
Use the --extensions option to specify what file extensions Babel should handle when compiling the entire src directory. The default --extensions can be accessed from Babel.DEFAULT_EXTENSIONS.
npx babel src --out-dir lib \
--extensions .ts,.js,.tsx,.jsx,.cjs,.mjs \
--presets=@babel/preset-typescript,@babel/preset-env,@babel/preset-react
Ignore files
Ignore spec and test files
npx babel src --out-dir lib --ignore "src/**/*.spec.js","src/**/*.test.js"
Copy files
Copy files that will not be compiled
npx babel src --out-dir lib --copy-files
If you don't want to copy ignored JavaScript files:
History
| Version | Changes |
|---|---|
| v7.8.0 | Added --copy-ignored |
| v7.8.4 | Change copyeIgnored option default to true, it can be disabled by --no-copy-ignored |
npx babel src --out-dir lib --copy-files --no-copy-ignored
Piping Files
Pipe a file in via stdin and output it to script-compiled.js
npx babel --out-file script-compiled.js < script.js
Using Plugins
Use the --plugins option to specify plugins to use in compilation
npx babel script.js --out-file script-compiled.js --plugins=@babel/transform-class-properties,@babel/transform-modules-amd
Using Presets
Use the --presets option to specify presets to use in compilation
npx babel script.js --out-file script-compiled.js --presets=@babel/preset-env,@babel/flow
Using Config Files
Ignoring .babelrc.json or .babelrc
Ignore the configuration from the project's .babelrc or .babelrc.json file and use the cli options e.g. for a custom build
npx babel --no-babelrc script.js --out-file script-compiled.js --presets=@babel/preset-env,@babel/preset-react
Custom config path
npx babel --config-file /path/to/my/babel.config.json --out-dir dist ./src
See here for more information about config files.
Set File Extensions
Added in: v7.8.0
By default, the transpiled file will use the .js extension.
You can control the output file extension with --out-file-extension
npx babel src --out-dir lib --out-file-extension .mjs
You can also preserve the input file extension with --keep-file-extension
npx babel src-with-mjs-and-cjs --out-dir lib --keep-file-extension
Note that --keep-file-extension and --out-file-extension cannot be used together.
Advanced Usage
There are many more options available, see options, babel --help and other sections for more information.