Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zcf0508/unplugin-https-reverse-proxy
👻 Add a reverse proxy for your dev service, support `https`.
https://github.com/zcf0508/unplugin-https-reverse-proxy
nuxt react rebuild repack unplugin vite vue webpack
Last synced: 18 days ago
JSON representation
👻 Add a reverse proxy for your dev service, support `https`.
- Host: GitHub
- URL: https://github.com/zcf0508/unplugin-https-reverse-proxy
- Owner: zcf0508
- License: mit
- Created: 2023-11-15T08:42:48.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-07T12:10:32.000Z (2 months ago)
- Last Synced: 2024-10-22T21:37:08.432Z (24 days ago)
- Topics: nuxt, react, rebuild, repack, unplugin, vite, vue, webpack
- Language: TypeScript
- Homepage:
- Size: 1.02 MB
- Stars: 5
- Watchers: 2
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# unplugin-https-reverse-proxy
[![NPM version](https://img.shields.io/npm/v/unplugin-https-reverse-proxy?color=a1b858&label=)](https://www.npmjs.com/package/unplugin-https-reverse-proxy)
A plugin for https reverse proxy, support `vite`、`webpack` and `rspack`.
## Install
Support set caddy file path by environment variable `UHRP_CADDY_PATH`, default is system cache folder.
```env
#.env.local
UHRP_CADDY_PATH=~/tmp/.uhrp
``````bash
# not auto install caddy when postinstall
npm i unplugin-https-reverse-proxy --save-dev# auto install
UHRP_AUTO_INSTALL_CADDY=true npm i unplugin-https-reverse-proxy --save-dev
``````ts
interface Options {
/** default: true */
enable?: boolean
/** target hostname */
target: string
/** default: false */
showCaddyLog?: boolean
/** default: false */
https?: boolean
}
```Vite
```ts
// vite.config.ts
import HttpsReverseProxy from 'unplugin-https-reverse-proxy/vite'export default defineConfig({
plugins: [
HttpsReverseProxy({ /* options */ }),
],
})
```Example: [`playground/`](./playground/)
Webpack 5
```js
// webpack.config.js/** @type {Parameters[0]} */
const reverseProxyOptions = {
enable: false,
target: 'xxx',
https: false,
}module.exports = {
/* ... */
devServer: {
client: {
// ↓ for HMR
webSocketURL: {
...(reverseProxyOptions.enable
? {
hostname: reverseProxyOptions.target,
}
: {}),
...(reverseProxyOptions.enable && reverseProxyOptions.https
? {
protocol: 'wss',
port: 443,
}
: {})
}
},
setupExitSignals: true,
allowedHosts: 'all',
},
plugins: [
require('unplugin-https-reverse-proxy/webpack')(reverseProxyOptions)
]
}
```
Webpack 4
```js
// webpack.config.js/** @type {Parameters[0]} */
const reverseProxyOptions = {
enable: false,
target: 'xxx',
// https: false, // not support yet
}module.exports = {
/* ... */
devServer: {
host: '0.0.0.0',
disableHostCheck: true,
},
plugins: [
require('unplugin-https-reverse-proxy/webpack')(reverseProxyOptions)
]
}
```
Rspack
```js
// rspack.config.js/** @type {Parameters[0]} */
const reverseProxyOptions = {
enable: false,
target: 'xxx',
https: false,
}module.exports = {
/* ... */
devServer: {
client: {
// ↓ for HMR
webSocketURL: {
...(reverseProxyOptions.enable
? {
hostname: reverseProxyOptions.target,
}
: {}),
...(reverseProxyOptions.enable && reverseProxyOptions.https
? {
protocol: 'wss',
port: 443,
}
: {})
}
},
},
plugins: [
require('unplugin-https-reverse-proxy/rspack')(reverseProxyOptions)
]
}
```
Rsbuild
```js
// rsbuild.config.js/** @type {Parameters[0]} */
const reverseProxyOptions = {
enable: false,
target: 'xxx',
https: false,
}module.exports = {
/* ... */
dev: {
client: {
// ↓ for HMR
...(reverseProxyOptions.enable
? {
host: reverseProxyOptions.target,
}
: {}),
...(reverseProxyOptions.enable && reverseProxyOptions.https
? {
protocol: 'wss',
port: '443',
}
: {})
},
},
tools: {
rspack: {
plugins: [
require('unplugin-https-reverse-proxy/rspack')(reverseProxyOptions)
]
},
},
}
```
Nuxt
```js
// nuxt.config.js
export default defineNuxtConfig({
modules: [
['unplugin-https-reverse-proxy/nuxt', { /* options */ }],
],
})
```**!important:** You need to update the `nuxt dev` script by adding `--fork=false` to enable host restoration.
```json
// package.json{
"scripts": {
"dev": "nuxt dev --fork=false"
}
}
```
Vue CLI 5
```js
// vue.config.js/** @type {Parameters[0]} */
const reverseProxyOptions = {
enable: false,
target: 'xxx',
https: false,
}module.exports = {
devServer: {
client: {
// ↓ for HMR
webSocketURL: {
...(reverseProxyOptions.enable
? {
hostname: reverseProxyOptions.target,
}
: {}),
...(reverseProxyOptions.enable && reverseProxyOptions.https
? {
protocol: 'wss',
port: 443,
}
: {})
}
},
setupExitSignals: true,
allowedHosts: 'all',
},
configureWebpack: {
plugins: [
require('unplugin-https-reverse-proxy/webpack')(reverseProxyOptions),
],
},
}
```
Vue CLI 4
```js
// vue.config.js/** @type {Parameters[0]} */
const reverseProxyOptions = {
enable: false,
target: 'xxx',
// https: false, // not support yet
}module.exports = {
devServer: {
host: '0.0.0.0',
disableHostCheck: true,
},
configureWebpack: {
plugins: [
require('unplugin-https-reverse-proxy/webpack')(reverseProxyOptions),
],
},
}
```
## Usage
```bash
# macOS
sudo -E npm run dev # your dev script
# ^ `-E` is important# windows
# use powershell as administrator
npm run dev # your dev script
```If your broswer shows a not trusted certificate warning, please check the keychain.
![keychain](https://github.com/zcf0508/unplugin-https-reverse-proxy/blob/main/images/Snipaste_2023-11-16_16-59-55.png)
More info, you can check [caddy about CA Root](https://caddyserver.com/docs/automatic-https#ca-root).