Babel Config Validator

Other

Validate Babel config files (babel.config.json, .babelrc, .babelrc.json, package.json#babel) for deprecated presets, plugin conflicts, ordering issues, and best practices. Use when validating Babel transpiler configs, auditing build setups, migrating Babel versions, or linting babel config files.

Install

openclaw skills install babel-config-validator

Babel Config Validator

Validate babel.config.json, .babelrc, .babelrc.json, and package.json#babel for deprecated presets/plugins, conflicting transforms, ordering issues, and best practices. Supports text, JSON, and summary output formats with CI-friendly exit codes.

Commands

# Full validation (all 24+ rules)
python3 scripts/babel_config_validator.py validate babel.config.json

# Quick syntax-only check (structure rules only)
python3 scripts/babel_config_validator.py check .babelrc

# Explain config in human-readable form
python3 scripts/babel_config_validator.py explain babel.config.json

# Suggest improvements
python3 scripts/babel_config_validator.py suggest package.json

# JSON output (CI-friendly)
python3 scripts/babel_config_validator.py validate .babelrc --format json

# Summary only (pass/fail + counts)
python3 scripts/babel_config_validator.py validate .babelrc --format summary

# Strict mode (warnings become errors)
python3 scripts/babel_config_validator.py validate .babelrc --strict

Rules (24+)

#CategorySeverityRule
S1StructureErrorFile not found or unreadable
S2StructureErrorEmpty config or no content
S3StructureWarningBoth babel.config and .babelrc present (conflict)
S4StructureWarningUnknown top-level config keys
S5StructureErrorInvalid JSON syntax
P1PresetsErrorDeprecated preset (es2015, es2016, es2017, latest, stage-*)
P2PresetsWarningPreset ordering matters (@babel/preset-typescript before @babel/preset-env)
P3PresetsWarningDuplicate presets
P4PresetsErrorUnknown/misspelled preset name
P5PresetsWarningMissing @babel/preset-env (most configs need it)
L1PluginsErrorDeprecated plugin (@babel/plugin-proposal-* → built-in)
L2PluginsWarningDuplicate plugins
L3PluginsWarningPlugin ordering conflict (decorators before class-properties)
L4PluginsWarningConflicting plugins (transform-runtime + external-helpers)
L5PluginsWarningPlugin without @babel/ scope (may be community or typo)
M1ModulesWarningmodules: false in preset-env without bundler context
M2ModulesWarningsourceType mismatch with modules setting
M3ModulesWarningConflicting module transforms
E1Env/OverridesWarningEmpty env config section
E2Env/OverridesWarningOverride without test pattern
E3Env/OverridesWarningUnknown env name (not development/production/test)
B1Best PracticesWarningloose mode inconsistency across plugins
B2Best PracticesWarningMissing targets/browserslist (unoptimized output)
B3Best PracticesWarninguseBuiltIns without corejs version
B4Best PracticesWarningcorejs version outdated (< 3)

Output Formats

  • text (default): Human-readable with colors and severity icons
  • json: Machine-parseable JSON array of findings
  • summary: Pass/fail with error/warning counts

Exit Codes

  • 0: No errors (warnings only or clean)
  • 1: One or more errors found
  • 2: File not found or invalid input

Requirements

  • Python 3.8+
  • No external dependencies (pure stdlib)