| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { defineConfig } from 'vite'
- import uni from '@dcloudio/vite-plugin-uni'
- import * as fs from 'fs'
- import * as path from 'path'
- import * as https from 'https'
- const CERT_DIR = path.resolve(__dirname, 'cert')
- const KEY_PATH = path.join(CERT_DIR, 'key.pem')
- const CERT_PATH = path.join(CERT_DIR, 'cert.pem')
- export default defineConfig({
- plugins: [
- uni(),
- {
- // uni CLI 不读 vite.config.ts 顶层 server.https,所以在 plugin 里通过
- // config hook 强制改写 server.https = { key, cert }
- name: 'force-https-with-mkcert',
- config(cfg) {
- cfg.server = cfg.server || {}
- cfg.server.https = {
- key: fs.readFileSync(KEY_PATH),
- cert: fs.readFileSync(CERT_PATH)
- }
- }
- },
- {
- // 强制配置 proxy:uniapp vite-plugin 默认代理会覆盖 vite.config.ts 的 server.proxy
- // 移动端 uniapp 通过 /dev-api 访问后端,需要把 /dev-api 代理到 9225
- name: 'force-dev-api-proxy',
- configureServer(server) {
- server.middlewares.use('/dev-api', (req, res, next) => {
- const url = req.url || ''
- const opts = {
- hostname: '127.0.0.1',
- port: 9225,
- path: url,
- method: req.method,
- headers: req.headers
- }
- const proxyReq = require('http').request(opts, (proxyRes) => {
- res.writeHead(proxyRes.statusCode || 502, proxyRes.headers)
- proxyRes.pipe(res, { end: true })
- })
- proxyReq.on('error', (err) => {
- res.statusCode = 502
- res.end('Proxy error: ' + err.message)
- })
- req.pipe(proxyReq, { end: true })
- })
- },
- configurePreviewServer(server) {
- server.middlewares.use('/dev-api', (req, res, next) => {
- const url = req.url || ''
- const opts = {
- hostname: '127.0.0.1',
- port: 9225,
- path: url,
- method: req.method,
- headers: req.headers
- }
- const proxyReq = require('http').request(opts, (proxyRes) => {
- res.writeHead(proxyRes.statusCode || 502, proxyRes.headers)
- proxyRes.pipe(res, { end: true })
- })
- proxyReq.on('error', (err) => {
- res.statusCode = 502
- res.end('Proxy error: ' + err.message)
- })
- req.pipe(proxyReq, { end: true })
- })
- }
- }
- ],
- server: {
- host: '0.0.0.0',
- port: 9000
- },
- preview: {
- host: '0.0.0.0',
- port: 9000
- },
- css: {
- preprocessorOptions: {
- scss: {
- additionalData: `@import "@/static/styles/variables.scss";`
- }
- }
- }
- })
|