360 Secure SkillHub
360 安全技能中心

Webpack Config Validator

核心功能:提供validate、check、explain、suggest四个命令,校验JSON格式webpack配置的结构正确性、入口输出问题、废弃加载器/插件、优化配置及24项最佳实践;支持严格模式、多输出格式,适配CI集成。典型场景:审计配置、生产构建准备、执行CI标准。输入为JSON导出的webpack配置,输出含文本/JSON/摘要格式的问题信息及修复建议。

charlie-morrison
charlie-morrison
热度 51.71
最近更新 2026-05-11 17:45:33
分类:开发依赖:代码执行 / 读写文件应用场景:代码审查 / 调试排错 / DevOps

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add webpack-config-validator
Metadata
name
webpack-config-validator
description
Validate JSON-exported webpack configuration files for structural issues, deprecated loaders/plugins, optimization gaps, and best practices. Use when auditing webpack configs, preparing production builds, or enforcing CI standards.

Webpack Config Validator

Validate webpack configuration files exported as JSON for structural correctness, entry/output issues, deprecated loaders and plugins, optimization configuration, and best practices. Pure Python 3 stdlib — no external dependencies.

Note: webpack configs are JS/TS, not directly parseable. This validator works with JSON-exported configs. Export via:

node -e "console.log(JSON.stringify(require('./webpack.config.js')))" > config.json
python3 scripts/webpack_config_validator.py validate config.json

Commands

validate — Full validation with all rules

python3 scripts/webpack_config_validator.py validate config.json
python3 scripts/webpack_config_validator.py validate config.json --strict
python3 scripts/webpack_config_validator.py validate config.json --format json --mode production

check — Quick check (errors and warnings only)

python3 scripts/webpack_config_validator.py check config.json
python3 scripts/webpack_config_validator.py check config.json --format summary

explain — Show all rules with descriptions

python3 scripts/webpack_config_validator.py explain config.json
python3 scripts/webpack_config_validator.py explain config.json --format json

suggest — Run validation and propose fixes

python3 scripts/webpack_config_validator.py suggest config.json
python3 scripts/webpack_config_validator.py suggest config.json --format json

Flags

Flag Description
--strict Treat warnings as errors — exit code 1 (CI-friendly)
--format text Human-readable output (default)
--format json Machine-readable JSON
--format summary Compact summary with counts
--mode production Override mode context for mode-specific rules (E3, O3)
--mode development Override mode context for mode-specific rules

Validation Rules (24)

Structure (5)

Rule Severity Description
S1 error File not found or unreadable
S2 error Empty config file
S3 error Invalid JSON syntax
S4 error Missing required fields (entry, output)
S5 warning/info Unknown or deprecated top-level keys

Entry/Output (4)

Rule Severity Description
E1 error Empty entry point (empty string, object, or array)
E2 error Output section missing 'path' property
E3 warning Output filename without content hash in production mode
E4 warning publicPath not set

Module/Rules (4)

Rule Severity Description
M1 warning Module rule without 'test' pattern
M2 warning Duplicate loader for same test pattern
M3 warning Deprecated loaders (raw-loader, url-loader, file-loader, json-loader)
M4 info No babel-loader/ts-loader/esbuild-loader/swc-loader for JS/TS

Plugins (4)

Rule Severity Description
P1 error Deprecated plugins (UglifyJsPlugin, ExtractTextPlugin, CommonsChunkPlugin)
P2 warning Duplicate plugin instances
P3 info HtmlWebpackPlugin without explicit template
P4 warning MiniCssExtractPlugin without corresponding loader in rules

Optimization (3)

Rule Severity Description
O1 info Missing splitChunks configuration
O2 info Missing custom minimizer configuration
O3 warning/info devtool set to eval or source-map in production mode

Best Practices (4)

Rule Severity Description
B1 info Missing resolve.extensions
B2 warning Hardcoded absolute filesystem paths in config
B3 warning No mode set (development/production/none)
B4 info Missing devServer configuration

Exit Codes

Code Meaning
0 No errors (warnings allowed unless --strict)
1 Errors found (or warnings in --strict mode)
2 File not found / parse error

CI Integration

# GitHub Actions example
- name: Validate webpack config
  run: |
    node -e "console.log(JSON.stringify(require('./webpack.config.js')))" > /tmp/wp-config.json
    python3 scripts/webpack_config_validator.py validate /tmp/wp-config.json --strict --mode production --format json

Example Output

webpack.config validate — config.json
======================================
[ERROR  ] S4: Missing required top-level field(s): output
         Every webpack config needs at least 'entry' and 'output'.
[WARNING] E4: output.publicPath not set
         Set publicPath to ensure assets are loaded from the correct URL. Common values: '/', '/assets/', 'auto'.
[WARNING] M3: Deprecated loader 'file-loader' in rule 2
         Replace with asset/resource (webpack 5 built-in).
[ERROR  ] P1: Deprecated plugin 'UglifyJsPlugin' at index 0
         Replace with TerserPlugin (terser-webpack-plugin).
[INFO   ] O1: No optimization.splitChunks configuration
         splitChunks enables automatic code splitting for shared dependencies. Add optimization: { splitChunks: { chunks: 'all' } } for better caching.
[WARNING] B3: No 'mode' set (development/production/none)
         Set mode to enable webpack's built-in optimizations. Without mode, webpack defaults to 'production' with a warning.

Result: INVALID
Summary: 2 error(s), 3 warning(s), 1 info