webpack-plugin-authoring

v2026.09.24

Writing webpack 5 plugins — hook selection (compiler vs compilation, tap vs tapAsync, processAssets stages), the asset pipeline (emitAsset, source classes, info metadata, source maps), watch-mode and persistent caching (file/context/missing/buildDependencies), plugin lifecycle (constructor purity, multi-compiler isolation, shutdown cleanup), schema-utils validation, WebpackError reporting, jest-worker parallelism, and compatibility patterns (compiler.webpack namespace, peerDependencies, getCompilationHooks WeakMap). Patterns are drawn from production plugins like mini-css-extract-plugin, terser-webpack-plugin, compression-webpack-plugin, and Next.js's webpack plugins. Trigger when writing, reviewing, or debugging webpack 5 plugins — even if the user doesn't explicitly mention "best practices" — anytime an `apply(compiler)` method is being written, hooks are being tapped, or a plugin imports from `webpack-sources`, the rules in this skill apply.

GitHub
Install command
npx skhub add pproenca/webpack-plugin-authoring
Markdown
SKILL.md

dot-skills Webpack 5 Plugins Best Practices

Comprehensive guide for writing correct, performant webpack 5 plugins. Contains 44 rules across 8 categories (8 hook + 7 asset + 5 cache + 5 life + 4 schema + 5 diag + 5 perf + 5 compat = 44), ordered by the authoring lifecycle: hook choice is the foundation, then asset manipulation, then caching/watch-mode correctness, then lifecycle hygiene, then user-facing concerns (schema validation, error reporting), then performance, then packaging.

Patterns are derived from webpack/webpack, the webpack-contrib plugin suite (mini-css-extract, terser, compression, copy, css-minimizer), and Next.js's webpack integration in vercel/next.js.

When to Apply

Reference these rules whenever:

  • Writing a new plugin (defining apply(compiler), picking which hook to tap)
  • Reviewing existing plugin code for correctness or performance
  • Debugging "why isn't my plugin's output showing up" — usually a hook/stage mismatch
  • Adding asset manipulation logic (processAssets, emitAsset, updateAsset)
  • Fixing watch-mode staleness or persistent-cache poisoning
  • Migrating a plugin from webpack 4 to webpack 5 (or supporting both)
  • Publishing a plugin to npm (export shape, peerDependencies, schema)

Rule Categories by Priority

PriorityCategoryImpactPrefix
1Hook Selection & Tap PatternsCRITICALhook-
2Asset PipelineCRITICALasset-
3Caching & Watch ModeHIGHcache-
4Plugin Lifecycle & StateHIGHlife-
5Schema & Options ValidationMEDIUM-HIGHschema-
6Errors, Warnings & LoggingMEDIUM-HIGHdiag-
7Performance & ParallelismMEDIUMperf-
8Compatibility & PackagingLOW-MEDIUMcompat-

Quick Reference

1. Hook Selection & Tap Patterns (CRITICAL)

2. Asset Pipeline (CRITICAL)

3. Caching & Watch Mode (HIGH)

4. Plugin Lifecycle & State (HIGH)

5. Schema & Options Validation (MEDIUM-HIGH)

6. Errors, Warnings & Logging (MEDIUM-HIGH)

7. Performance & Parallelism (MEDIUM)

8. Compatibility & Packaging (LOW-MEDIUM)

How to Use

When writing or reviewing plugin code, scan AGENTS.md for the relevant category, then read the individual rule file for the full pattern and rationale.

Reference Files

FileDescription
references/_sections.mdCategory definitions, impact levels, descriptions
assets/templates/_template.mdTemplate for authoring new rules
metadata.jsonVersion, discipline, source references
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

MIT

Source path

skills/.experimental/webpack-plugin-authoring

Default branch

master

Latest commit

cf93c57

Tree SHA

afbb575