58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import { fileURLToPath, URL } from 'node:url';
|
|
|
|
import { defineConfig } from 'vite';
|
|
import plugin from '@vitejs/plugin-vue';
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
import child_process from 'child_process';
|
|
import { env } from 'process';
|
|
|
|
const baseFolder =
|
|
env.APPDATA !== undefined && env.APPDATA !== ''
|
|
? `${env.APPDATA}/ASP.NET/https`
|
|
: `${env.HOME}/.aspnet/https`;
|
|
|
|
const certificateName = "vueapp.client";
|
|
const certFilePath = path.join(baseFolder, `${certificateName}.pem`);
|
|
const keyFilePath = path.join(baseFolder, `${certificateName}.key`);
|
|
|
|
if (!fs.existsSync(certFilePath) || !fs.existsSync(keyFilePath)) {
|
|
if (0 !== child_process.spawnSync('dotnet', [
|
|
'dev-certs',
|
|
'https',
|
|
'--export-path',
|
|
certFilePath,
|
|
'--format',
|
|
'Pem',
|
|
'--no-password',
|
|
], { stdio: 'inherit', }).status) {
|
|
throw new Error("Could not create certificate.");
|
|
}
|
|
}
|
|
|
|
const target = env.ASPNETCORE_HTTPS_PORT ? `https://localhost:${env.ASPNETCORE_HTTPS_PORT}` :
|
|
env.ASPNETCORE_URLS ? env.ASPNETCORE_URLS.split(';')[0] : 'https://localhost:7274';
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig({
|
|
plugins: [plugin()],
|
|
resolve: {
|
|
alias: {
|
|
'@': fileURLToPath(new URL('./src', import.meta.url))
|
|
}
|
|
},
|
|
server: {
|
|
proxy: {
|
|
'^/weatherforecast': {
|
|
target,
|
|
secure: false
|
|
}
|
|
},
|
|
port: 5173,
|
|
https: {
|
|
key: fs.readFileSync(keyFilePath),
|
|
cert: fs.readFileSync(certFilePath),
|
|
}
|
|
}
|
|
})
|