JSPM

http-proxy-config

0.1.5
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2
  • Score
    100M100P100Q29840F
  • License MIT

Easy to set proxy options for http-proxy-middleware.

Package Exports

  • http-proxy-config

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (http-proxy-config) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

http-proxy-config

Easy to set proxy options for http-proxy-middleware.

Install

npm install -D http-proxy-config

Usage

Proxy support format: String, Array or Object.

package.json

"dependencies": {
...
},
"devDependencies": {
...
},
// key will transform to path matching, value will transform to target options
// First match will be used. The order of the configuration matters.
"devEnvironments": {
    // String
    "proxies": "http://api.xxx.com",                        // matching 'http://api.xxx.com' proxy to 'http://api.xxx.com'
    // Object
    "proxies": {
        "/api/users": "http://api3.xxx.com",                // matching '/api/users' proxy to 'http://api3.xxx.com'
        "/api/user/1": "http://api2.xxx.com",               // matching '/api/user/1' proxy to 'http://api2.xxx.com'
        "/api": "http://api1.xxx.com",                      // matching '/api' proxy to 'http://api1.xxx.com'
        "/api/books": {                                     // matching '/api/books' to target 'http://localhost:3000
            target: "http://localhost:3000"
            (http-proxy-middleware options)...
        }
    },
    // Array
    "proxies": [
        "http://api1.xxxx.com",                             // matching 'http://api.xxx.com' proxy to 'http://api.xxx.com'
        {
            "/api/users": "http://api3.xxx.com",            // matching '/api/users' proxy to 'http://api3.xxx.com'
            "/api/user/1": "http://api2.xxx.com",           // matching '/api/user/1' proxy to 'http://api2.xxx.com'
            "/api": "http://api1.xxx.com"                   // matching '/api' proxy to 'http://api1.xxx.com'
        },
        {
            "/api/books": {                                 // matching '/api/books' proxy to 'http://localhost:3000
                target: "http://localhost:3000"
                (http-proxy-middleware options)...
            }
        }
    ],
    // use () to rewrite path(content which is in () will be rewritten to '')
    "proxies": {
        "(http://api.xxx.com)/api/user/1": "http://api5.xxx.com"    // request '/http://api.xxx.com/api/user/1', matching 'http://api.xxx.com/api/user/1', proxy to http://api5.xxx.com/api/user/1
        "(http://api.xxx.com)/api/user/2": "http://api4.xxx.com"    // request '/http://api.xxx.com/api/user/2', matching 'http://api.xxx.com/api/user2', proxy to http://api4.xxx.com/api/user/2'
        "(http://api.xxx.com)/api/users": "http://api3.xxx.com",     // request '/http://api.xxx.com/api/users', matching 'http://api.xxx.com/api/users', proxy to http://api3.xxx.com/api/users'
        "(/proxy)/api": "http://api2.xxx.com",               // request '/proxy/api/210.75.225.254', matching '/proxy/api', proxy to 'http://api2.xxx.com/api/210.75.225.254'
        "(/proxy)": "http://api1.xxx.com"                    // request '/proxy/json/210.75.225.254', matching '/proxy', proxy to 'http://api1.xxx.com/json/210.75.225.254'
    }
}
...

webpack.config.dev.js

setting options

import { settings } from 'http-proxy-config';
import pkg from './package.json';

const { local, proxies } = pkg.devEnvironments;

{
    devServer: {
        host: '0.0.0.0',
        port: local,
        proxy: {
            ...settings(proxies),
            ...other
        }
    }
    ...
}

rewrite default options of http-proxy-middleware

{
    devServer: {
        host: '0.0.0.0',
        port: local,
        proxy: {
            ...settings(proxies, {
                logLevel: 'info',
                secure: true,
                ws: true
                ...(http-proxy-middleware options)
            }),
            ...other
        }
    }
    ...
}

default options

{
    logLevel: 'debug',
    changeOrigin: true,
    secure: false,
    cookieDomainRewrite: '',
    cookiePathRewrite: '/',
    pathRewrite: pathRewriteWrapper  // pathRewriteWrapper will replace [xxx] to '' which is in path matching, like '[/proxy]' or '[/proxy]/api'
}

API

/**
 * @desc create options for http-proxy-middleware
 * @param {string | array | object} options proxy config.
 * @param {object} default default options.
 * @return {object}
 */
settings(options, default)