webpack-plugin-interceptor
v1.0.1
Published
A webpack plugin based on service worker to intercept and modify requests in a development environment
Downloads
12
Maintainers
Readme
webpack-plugin-interceptor
English | 中文
A webpack plugin based on service worker to intercept and modify requests in a development environment
the browser needs to support service worker
a chrome extension can be used in production environment. easy-interceptor
Usage
in webpack.config.js
const { Interceptor, middleware } = require('webpack-plugin-interceptor')
export default {
// ...
plugins: [
// Interceptor()
// or
new Interceptor({
input: 'src/index.ts', // 默认src/index.ts
mockDir: './src/__mock__', // 默认src/mock
}),
],
devServer: {
// install middleware
setupMiddlewares: (middlewares) => {
middlewares.push(middleware)
return middlewares
}
}
}
in webpack-dev-server3.0
export default {
devServer: {
before: (app) => {
app.use(middleware.middleware)
}
}
}
// create a .ts or .js file in __mock__ dir,must be use export default and set rules by plugin provide
export default function() {
window.__INTERCEPTOR_DEVTOOL__.set(
'1',
{
url: '**/tsconfig.json',
method: 'get',
response: '{"foo":"test"}',
// enable: false,
// delay: 5000,
}
)
}
ts type, create a new file interceptor.d.ts
, input this text
/// <reference types="webpack-plugin-interceptor/typing" />
you will meet the following errors in https project. The solutions are as follows
Uncaught (in promise) DOMException: Failed to register a ServiceWorker for scope ('https://127.0.0.1/') with script ('https://127.0.0.1/sw000.js'): An SSL certificate error occurred when fetching the script.
// terminal
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --user-data-dir=/tmp --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:443
// windows
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --user-data-dir=./tmp --ignore-certificate-errors --unsafely-treat-insecure-origin-as-secure=https://localhost:443
API
__INTERCEPTOR_DEVTOOL__
|prop|explain|type|description| |:--:|:---|:---|:---| |get|get rules|()=>Promise| |set|set a rule|(id, rule) => void| |clear|clear all rules|()=>void|
InterceptorRule
|prop|explain|type|description|
|:--|:---|:---|:---|
|url|match request url|string|rquired
|response|response text|string|rquired
|delay|delay|number|0
|enable|enable rule|boolean|true
|method|request method|get
post
put
delete
|
|responseHeaders|response headers|Record<string, string>|{}
|status|response status|number|200
about multi-page: the sw.js scope is
./
, so the plugin supports multi-page. just load the configured page to make the script active