A webpack plugin based on service worker to intercept and modify requests in a development environment
Installations
npm install webpack-plugin-interceptor
Developer Guide
Typescript
Yes
Module System
CommonJS
Node Version
14.18.3
NPM Version
6.13.4
Releases
Unable to fetch releases
Contributors
Unable to fetch Contributors
Languages
JavaScript (61.22%)
TypeScript (38.78%)
Developer
hans000
Download Statistics
Total Downloads
289
Last Day
1
Last Week
2
Last Month
11
Last Year
150
GitHub Statistics
7 Commits
1 Watching
1 Branches
1 Contributors
Bundle Size
1.85 kB
Minified
922.00 B
Minified + Gzipped
Package Meta Information
Latest Version
1.0.1
Package Id
webpack-plugin-interceptor@1.0.1
Unpacked Size
30.45 kB
Size
10.31 kB
File Count
11
NPM Version
6.13.4
Node Version
14.18.3
Total Downloads
Cumulative downloads
Total Downloads
289
Last day
0%
1
Compared to previous day
Last week
-33.3%
2
Compared to previous week
Last month
-68.6%
11
Compared to previous month
Last year
80.7%
150
Compared to previous year
Daily Downloads
Weekly Downloads
Monthly Downloads
Yearly Downloads
Peer Dependencies
2
Dev Dependencies
5
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
LICENSE
No vulnerabilities found.
No security vulnerabilities found.