mirror of https://github.com/aminya/setup-cpp
54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import module from "module"
|
|
import { type TerserOptions, defineConfig } from "vite"
|
|
import babel from "vite-plugin-babel"
|
|
import terserRc from "./.terserrc.mjs"
|
|
import babelConfig from "./babel.config.mts"
|
|
|
|
const isLegacy = process.env.TARGET === "legacy"
|
|
|
|
const viteConfig = defineConfig({
|
|
build: {
|
|
ssr: "./src/setup-cpp.ts",
|
|
outDir: isLegacy ? "./dist/legacy" : "./dist/modern",
|
|
target: isLegacy ? "node12" : "node20",
|
|
minify: "terser",
|
|
terserOptions: terserRc as TerserOptions,
|
|
sourcemap: true,
|
|
rollupOptions: {
|
|
output: {
|
|
format: isLegacy
|
|
? "cjs"
|
|
: "es",
|
|
},
|
|
},
|
|
emptyOutDir: process.env.NODE_ENV === "production",
|
|
},
|
|
resolve: {
|
|
alias: {
|
|
...(isLegacy
|
|
? {
|
|
"fs/promises": "./src/utils/compat/fs/promises.ts",
|
|
"stream/promises": "./src/utils/compat/stream/promises.ts",
|
|
"stream/web": "web-streams-polyfill/dist/ponyfill.mjs",
|
|
"util/types": "util.types/index.js",
|
|
diagnostics_channel: "diagnostics_channel/index.js",
|
|
}
|
|
: {}),
|
|
},
|
|
},
|
|
ssr: {
|
|
target: "node",
|
|
noExternal: true,
|
|
external: module.builtinModules,
|
|
},
|
|
plugins: isLegacy
|
|
? [
|
|
babel({
|
|
babelConfig,
|
|
}),
|
|
]
|
|
: [],
|
|
})
|
|
|
|
export default viteConfig
|