55 lines
2.2 KiB
JavaScript
55 lines
2.2 KiB
JavaScript
import react from "@vitejs/plugin-react";
|
|
import path from "node:path"
|
|
import { defineConfig } from "vite";
|
|
|
|
import viteBaseConfig from "../vite.config";
|
|
const useClientBanner = '"use client";';
|
|
// https://vitejs.dev/config/
|
|
export default defineConfig({
|
|
...viteBaseConfig,
|
|
plugins: [react()],
|
|
build: {
|
|
lib: {
|
|
entry: path.resolve(__dirname, "src/index.ts"),
|
|
name: "Cal",
|
|
fileName: (format) => `Cal.${format}.js`,
|
|
},
|
|
rollupOptions: {
|
|
// make sure to externalize deps that shouldn't be bundled
|
|
// into your library
|
|
external: ["react", "react/jsx-runtime", "react-dom", "react-dom/client"],
|
|
onwarn(warning, defaultHandler) {
|
|
// If "use client" directive has been added to the top of the file, then we can ignore the warnings related to it
|
|
if (useClientBanner) {
|
|
if (
|
|
// vite-plugin-react also ignores this warning - https://github.com/vitejs/vite-plugin-react/blob/3748fc7493cf0a07a2ae275fbd1ae035f01010cc/packages/plugin-react/src/index.ts#L307-L323
|
|
warning.code === 'MODULE_LEVEL_DIRECTIVE' &&
|
|
warning.message.includes('use client')
|
|
) {
|
|
return
|
|
}
|
|
// It comes due to use client directive being ignored in the middle of the file
|
|
// Even though this could happen in other cases, but there would always be another corresponding error logged which could still highlight any issue during build
|
|
if (warning.message?.includes("Can't resolve original location of error")) {
|
|
return
|
|
}
|
|
}
|
|
defaultHandler(warning)
|
|
},
|
|
output: {
|
|
exports: "named",
|
|
// Add "use client" directive to the top of the bundle for Next.js App Router compatibility
|
|
// During bundling "use client" directive comes in b/w the file which is ignored/removed by Rollup because it makes sense at the top only
|
|
banner: useClientBanner,
|
|
// Provide global variables to use in the UMD build
|
|
// for externalized deps
|
|
globals: {
|
|
react: "React",
|
|
"react-dom": "ReactDOM",
|
|
"react/jsx-runtime": "jsxRuntime",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|