UNPKG

@lesnoypudge/builder

Version:

lesnoypudge-builder

103 lines (102 loc) 2.41 kB
import { mergeConfig } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; import { checker } from "vite-plugin-checker"; import dts from "vite-plugin-dts"; import react from "@vitejs/plugin-react"; import { libInjectCss } from "vite-plugin-lib-inject-css"; import path from "node:path"; import { glob } from "glob"; import url from "node:url"; const getViteLibraryConfig = (options) => { const { tsconfigPath, importMetaUrl } = options; const _libraryConfig = { build: { outDir: "build", emptyOutDir: true, copyPublicDir: false, lib: { entry: `./src/index.ts`, formats: ["es"] }, sourcemap: true, minify: false, ssr: true, rollupOptions: { input: Object.fromEntries( glob.sync( `./src/**/*.{ts,tsx}`, { ignore: `./src/**/*.{d,test}.{ts,tsx}` } ).map((file) => [ path.relative( "./src", file.slice( 0, file.length - path.extname(file).length ) ), // file, url.fileURLToPath(new URL(file, importMetaUrl)) ]) ), treeshake: true, output: { assetFileNames: "assets/[name][extname]", entryFileNames: "[name].js" } } } }; const libraryConfig = _libraryConfig; const extraPlugins = { libInjectCss, react }; const _extraPluginOptions = { react: { babel: { plugins: [ [ "@babel/plugin-transform-react-jsx", { runtime: "automatic" } ], "jsx-control-statements" ] } } }; const extraPluginOptions = _extraPluginOptions; const plugins = { tsconfigPaths, dts, checker }; const _pluginOptions = { dts: { tsconfigPath }, checker: { typescript: true } }; const pluginOptions = _pluginOptions; const getBasePreparedConfig = () => { return mergeConfig(libraryConfig, { plugins: [ plugins.checker(pluginOptions.checker), plugins.dts(pluginOptions.dts), plugins.tsconfigPaths() ] }); }; return { libraryConfig, extraPlugins, extraPluginOptions, plugins, pluginOptions, getBasePreparedConfig }; }; export { getViteLibraryConfig }; //# sourceMappingURL=viteConfig.js.map