MissingSideEffectsWarning.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. MIT License http://www.opensource.org/licenses/mit-license.php
  3. Author Alexander Akait @alexander-akait
  4. */
  5. "use strict";
  6. const WebpackError = require("../WebpackError");
  7. /** @typedef {{ name: string, modules: number, size: number }} MissingSideEffectsDetails */
  8. class MissingSideEffectsWarning extends WebpackError {
  9. /**
  10. * Creates an instance of MissingSideEffectsWarning.
  11. * @param {MissingSideEffectsDetails[]} packages the packages to name, costliest first
  12. * @param {number} total how many packages were found
  13. * @param {number} wasted the bytes they keep in the bundle
  14. */
  15. constructor(packages, total, wasted) {
  16. super(
  17. `missing sideEffects: ${total} ${total === 1 ? "package keeps" : "packages keep"} ${wasted} bytes of unused code because ${total === 1 ? "its" : "their"} package.json does not declare 'sideEffects':
  18. ${packages
  19. .map(
  20. ({ name, modules, size }) =>
  21. ` ${name} (${size} bytes in ${modules} ${modules === 1 ? "module" : "modules"})`
  22. )
  23. .join("\n")}
  24. Without the field webpack must assume every module runs code on import. For more info visit https://webpack.js.org/guides/tree-shaking/`
  25. );
  26. this.name = "MissingSideEffectsWarning";
  27. }
  28. }
  29. module.exports = MissingSideEffectsWarning;