webpack-plugin-interceptor
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

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

MIT

Package Sidebar

Install

npm i webpack-plugin-interceptor

Weekly Downloads

0

Version

1.0.1

License

MIT

Unpacked Size

31.2 kB

Total Files

11

Last publish

Collaborators

  • hans000