mirror of
https://github.com/electron-vite/electron-vite-vue
synced 2025-01-19 11:56:36 +08:00
72 lines
1.9 KiB
TypeScript
72 lines
1.9 KiB
TypeScript
import { defineConfig } from 'vite'
|
|
import vue from '@vitejs/plugin-vue'
|
|
import { join, sep } from 'path'
|
|
import dotenv from 'dotenv'
|
|
|
|
dotenv.config({ path: join(__dirname, '.env') })
|
|
const root = join(__dirname, 'src/render')
|
|
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig({
|
|
plugins: [vue()],
|
|
root,
|
|
// base: './',
|
|
server: {
|
|
port: +process.env.PORT,
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
'@root': __dirname,
|
|
'@assets': join(__dirname, 'src/render/assets'),
|
|
'@components': join(__dirname, 'src/render/components'),
|
|
'@lib': join(__dirname, 'src/render/lib'),
|
|
'@utils': join(__dirname, 'src/render/utils'),
|
|
'@views': join(__dirname, 'src/render/views'),
|
|
},
|
|
},
|
|
optimizeDeps: {
|
|
// 这里不加也没事,用 require 的形式就能避开 import 被编译成 /@modules/fs?import
|
|
// allowNodeBuiltins: ['electron-is-dev', 'electron-store', 'electron']
|
|
},
|
|
build: {
|
|
outDir: join(__dirname, 'dist/render'),
|
|
rollupOptions: {
|
|
output: {
|
|
// format: 'commonjs',
|
|
},
|
|
external: [
|
|
'crypto',
|
|
'assert',
|
|
'fs',
|
|
'util',
|
|
'os',
|
|
'events',
|
|
'child_process',
|
|
'http',
|
|
'https',
|
|
'path',
|
|
'electron',
|
|
],
|
|
plugins: [
|
|
{
|
|
name: '@rollup/plugin-cjs2esm',
|
|
transform(code, filename) {
|
|
if (filename.includes(`${sep}node_modules${sep}`)) {
|
|
return code
|
|
}
|
|
|
|
const cjsRegexp = /(const|let|var)[\n\s]+(\w+)[\n\s]*=[\n\s]*require\(["|'](.+)["|']\)/g
|
|
const res = code.match(cjsRegexp)
|
|
if (res) {
|
|
// const Store = require('electron-store') -> import Store from 'electron-store'
|
|
code = code.replace(cjsRegexp, `import $2 from '$3'`)
|
|
}
|
|
return code
|
|
},
|
|
}
|
|
],
|
|
},
|
|
},
|
|
})
|
|
|