webpack-espower-loader
raw JSON → 2.0.0 verified Sat Apr 25 auth: no javascript
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.
Common errors
error Error: Module not found: Error: Cannot resolve module 'espower' ↓
cause espower is not installed as a peer dependency.
fix
Install espower: npm install --save-dev espower
error TypeError: Cannot read property 'replace' of undefined ↓
cause Loader options are undefined or null when passed to espower.
fix
Ensure options object is provided in webpack config (even if empty).
error Error: webpack-espower-loader only works with webpack 4+. For webpack 3 use version 1.x. ↓
cause Using webpack-espower-loader 2.x with webpack 3.
fix
Install webpack-espower-loader@1.0.2: npm install --save-dev webpack-espower-loader@1.0.2
Warnings
breaking webpack-espower-loader 2.x does not work with webpack 3 or lower. ↓
fix Use webpack-espower-loader@1.0.2 for webpack 3 or lower.
breaking webpack-espower-loader does not work with babel-loader (since babel 5). ↓
fix Use babel-plugin-espower instead of webpack-espower-loader when using babel-loader.
deprecated The 'pattern' option (singular) is deprecated in favor of 'patterns' (plural). ↓
fix Use 'patterns' in loader options.
gotcha The loader must be placed after transpilation loaders like babel-loader in the rule 'use' array. ↓
fix Ensure webpack-espower-loader runs after babel-loader in the loader chain.
gotcha Secure coding: The loader does not escape special characters in assertion expressions; ensure test inputs are safe to avoid injection. ↓
fix Sanitize or avoid dynamic generation of assertion messages from untrusted input.
Install
npm install webpack-espower-loader yarn add webpack-espower-loader pnpm add webpack-espower-loader Quickstart
// webpack.config.js
{
module: {
exprContextCritical: false,
rules: [{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: 'webpack-espower-loader',
options: {
patterns: [
'assert(value, [message])',
'assert.ok(value, [message])',
'assert.equal(actual, expected, [message])',
'assert.notEqual(actual, expected, [message])',
'assert.strictEqual(actual, expected, [message])',
'assert.notStrictEqual(actual, expected, [message])',
'assert.deepEqual(actual, expected, [message])',
'assert.notDeepEqual(actual, expected, [message])'
]
}
}
}]
}
}
// test.js
const assert = require('power-assert');
assert.deepEqual([1,2,3], [1,2,4]); // outputs Power Assert diagnostics