{"id":20756,"library":"webpack-espower-loader","title":"webpack-espower-loader","description":"A webpack loader for power-assert that applies espower instrumentation to JavaScript sources during the webpack build process, enabling detailed assertion error messages (Power Assert) when tests fail. Current stable version is 2.0.0, with a 1.x branch for webpack 3 or lower. The loader is intended for use with webpack 4+; for webpack 3 or lower, use version 1.x. Key differentiator: it integrates Power Assert into webpack build pipelines, but note that it does not work with babel-loader (use babel-plugin-espower instead). The loader passes options through to espower.","status":"active","version":"2.0.0","language":"javascript","source_language":"en","source_url":"https://github.com/power-assert-js/webpack-espower-loader","tags":["javascript","assert","power-assert","test","webpack"],"install":[{"cmd":"npm install webpack-espower-loader","lang":"bash","label":"npm"},{"cmd":"yarn add webpack-espower-loader","lang":"bash","label":"yarn"},{"cmd":"pnpm add webpack-espower-loader","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Required at runtime for Power Assert functionality; webpack-espower-loader only instruments code, power-assert provides the assertion API.","package":"power-assert","optional":false},{"reason":"Peer dependency used for instrumentation; webpack-espower-loader delegates to espower for transforming assertion expressions.","package":"espower","optional":false}],"imports":[],"quickstart":{"code":"// webpack.config.js\n{\n  module: {\n    exprContextCritical: false,\n    rules: [{\n      test: /\\.js$/,\n      exclude: /node_modules/,\n      use: {\n        loader: 'webpack-espower-loader',\n        options: {\n          patterns: [\n            'assert(value, [message])',\n            'assert.ok(value, [message])',\n            'assert.equal(actual, expected, [message])',\n            'assert.notEqual(actual, expected, [message])',\n            'assert.strictEqual(actual, expected, [message])',\n            'assert.notStrictEqual(actual, expected, [message])',\n            'assert.deepEqual(actual, expected, [message])',\n            'assert.notDeepEqual(actual, expected, [message])'\n          ]\n        }\n      }\n    }]\n  }\n}\n\n// test.js\nconst assert = require('power-assert');\nassert.deepEqual([1,2,3], [1,2,4]); // outputs Power Assert diagnostics","lang":"javascript","description":"Configures webpack-espower-loader in webpack 4+ and shows a basic Power Assert test that produces enhanced assertion output."},"warnings":[{"fix":"Use webpack-espower-loader@1.0.2 for webpack 3 or lower.","message":"webpack-espower-loader 2.x does not work with webpack 3 or lower.","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use babel-plugin-espower instead of webpack-espower-loader when using babel-loader.","message":"webpack-espower-loader does not work with babel-loader (since babel 5).","severity":"breaking","affected_versions":">=2.0.0"},{"fix":"Use 'patterns' in loader options.","message":"The 'pattern' option (singular) is deprecated in favor of 'patterns' (plural).","severity":"deprecated","affected_versions":">=2.0.0"},{"fix":"Ensure webpack-espower-loader runs after babel-loader in the loader chain.","message":"The loader must be placed after transpilation loaders like babel-loader in the rule 'use' array.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Sanitize or avoid dynamic generation of assertion messages from untrusted input.","message":"Secure coding: The loader does not escape special characters in assertion expressions; ensure test inputs are safe to avoid injection.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Install espower: npm install --save-dev espower","cause":"espower is not installed as a peer dependency.","error":"Error: Module not found: Error: Cannot resolve module 'espower'"},{"fix":"Ensure options object is provided in webpack config (even if empty).","cause":"Loader options are undefined or null when passed to espower.","error":"TypeError: Cannot read property 'replace' of undefined"},{"fix":"Install webpack-espower-loader@1.0.2: npm install --save-dev webpack-espower-loader@1.0.2","cause":"Using webpack-espower-loader 2.x with webpack 3.","error":"Error: webpack-espower-loader only works with webpack 4+. For webpack 3 use version 1.x."}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}