@lesnoypudge/builder
Version:
lesnoypudge-builder
103 lines (102 loc) • 2.41 kB
JavaScript
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