electron-vite-vue/vite.config.ts
2021-02-17 22:27:40 +08:00

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
},
}
],
},
},
})