electron-vite-vue/scripts/rollup.config.ts
2021-11-08 20:21:50 +08:00

65 lines
1.7 KiB
TypeScript

import path from 'path'
import { RollupOptions } from 'rollup'
import nodeResolve from '@rollup/plugin-node-resolve'
import typescript from '@rollup/plugin-typescript'
import commonjs from '@rollup/plugin-commonjs'
import replace from '@rollup/plugin-replace'
import alias from '@rollup/plugin-alias'
import json from '@rollup/plugin-json'
import { builtins } from './utils'
export interface ConfigOptions {
env?: typeof process.env.NODE_ENV
proc: 'main' | 'render' | 'preload'
}
export default function (opts: ConfigOptions) {
const sourcemap = opts.proc === 'render'
const options: RollupOptions = {
input: path.join(__dirname, `../src/${opts.proc}/index.ts`),
output: {
dir: path.join(__dirname, `../dist/${opts.proc}`),
format: 'cjs',
sourcemap,
},
plugins: [
nodeResolve({
extensions: ['.ts', '.js', 'json'],
}),
commonjs(),
json(),
typescript({
sourceMap: sourcemap,
noEmitOnError: true,
}),
alias({
entries: {
'@root': path.join(__dirname, '..'),
'@': path.join(__dirname, '../src'),
},
}),
replace({
...Object
.entries({ NODE_ENV: opts.env })
.reduce(
(acc, [k, v]) => Object.assign(acc, { [`process.env.${k}`]: JSON.stringify(v) }),
{},
),
preventAssignment: true,
}),
],
external: [
...builtins(),
'electron',
],
onwarn: warning => {
// https://github.com/rollup/rollup/issues/1089#issuecomment-365395213
if (warning.code !== 'CIRCULAR_DEPENDENCY') {
console.error(`(!) ${warning.message}`)
}
},
}
return options
}