es2c/rollup.config.js

58 lines
1.6 KiB
JavaScript
Raw Normal View History

2024-12-08 21:34:29 +00:00
import { resolve } from "path";
import { defineConfig } from "rollup";
import terser from "@rollup/plugin-terser";
import typescript from "@rollup/plugin-typescript";
import babel from "@rollup/plugin-babel";
import commonjs from "@rollup/plugin-commonjs";
import json from "@rollup/plugin-json";
import nodeResolve from "@rollup/plugin-node-resolve";
import nodeExternals from "rollup-plugin-node-externals";
const mode = process.env.NODE_ENV ?? "dev";
const shouldMinify = () => mode === "prod";
function overlay(path, src) {
path = resolve(path);
return { load: id => path === id ? src : null };
}
export default defineConfig({
input: "./src/main.ts",
plugins: [
typescript({
compilerOptions: {
allowImportingTsExtensions: true,
noEmit: true,
},
noForceEmit: true,
noEmitOnError: true,
}),
babel({
extensions: [".js", ".ts"],
exclude: "node_modules/**",
babelHelpers: "bundled",
plugins: [
["@babel/plugin-transform-typescript", {
onlyRemoveTypeImports: true,
optimizeConstEnums: true,
}],
["@babel/plugin-proposal-decorators", { legacy: true }],
["@babel/plugin-transform-class-properties"],
]
}),
nodeResolve(),
commonjs(),
json(),
nodeExternals(),
shouldMinify() && terser({ sourceMap: true })
],
output: {
dir: "dst",
format: "esm",
sourcemap: true,
inlineDynamicImports: true,
},
});