@jpapini/vite-config
Version:
Custom Vite.js configuration for TypeScript libraries.
82 lines (81 loc) • 2.6 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const path = require("node:path");
const rollupPluginNodeExternals = require("rollup-plugin-node-externals");
const vite = require("vite");
const dts = require("vite-plugin-dts");
const tsconfigPaths = require("vite-tsconfig-paths");
function createLibraryViteConfig(options) {
const rootDir = options.rootDir;
const packageJson = options.packageJson ?? path.join(rootDir, "package.json");
const srcDir = options.srcDir ?? path.join(rootDir, "src");
const entryFile = options.entryFile ?? path.join(srcDir, "index.ts");
const outDir = options.outDir ?? path.join(rootDir, "dist");
const publicDir = options.publicDir ?? path.join(rootDir, "public");
const include = Array.isArray(options.include) ? options.include : options.include ? [options.include] : ["src/**/*.{js,jsx,ts,tsx}", "src/**/*.d.ts", "dts/**/*.d.ts"];
const exclude = Array.isArray(options.exclude) ? options.exclude : options.exclude ? [options.exclude] : ["**/*.test.{js,jsx,ts,tsx}", "**/*.spec.{js,jsx,ts,tsx}"];
const libraryConfig = vite.defineConfig({
root: rootDir,
publicDir,
build: {
target: "es2022",
outDir,
copyPublicDir: true,
minify: false,
emptyOutDir: false,
sourcemap: true,
lib: {
entry: {
index: entryFile
},
formats: ["cjs", "es"],
fileName: (format, entryName) => path.join(
format === "es" ? "esm" : "cjs",
[entryName, format === "es" ? "mjs" : "cjs"].join(".")
)
},
rollupOptions: {
output: {
preserveModules: true,
exports: "named",
hoistTransitiveImports: false,
assetFileNames: "assets/[name][extname]"
}
}
},
esbuild: {
jsx: "automatic"
},
plugins: [
{
...rollupPluginNodeExternals.nodeExternals({
packagePath: packageJson,
builtins: true,
deps: true,
devDeps: true,
peerDeps: true
}),
enforce: "pre"
},
{
...tsconfigPaths({
root: rootDir
}),
enforce: "pre"
},
{
...dts({
root: rootDir,
outDir: path.join(outDir, "types"),
include: include.map((glob) => path.join(rootDir, glob)),
exclude
}),
enforce: "post",
apply: "build"
}
]
});
return libraryConfig;
}
exports.createLibraryViteConfig = createLibraryViteConfig;
//# sourceMappingURL=library-config.cjs.map