| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- import type { ConfigEnv, UserConfig } from 'vite';
- import type { DefineLibraryOptions } from '../typing';
- import { readPackageJSON } from '@vben/node-utils';
- import { defineConfig, mergeConfig } from 'vite';
- import { loadLibraryPlugins } from '../plugins';
- import { getCommonConfig } from './common';
- function defineLibraryConfig(userConfigPromise?: DefineLibraryOptions) {
- return defineConfig(async (config: ConfigEnv) => {
- const options = await userConfigPromise?.(config);
- const { command, mode } = config;
- const { library = {}, vite = {} } = options || {};
- const root = process.cwd();
- const isBuild = command === 'build';
- const plugins = await loadLibraryPlugins({
- dts: false,
- injectMetadata: true,
- isBuild,
- mode,
- ...library,
- });
- const { dependencies = {}, peerDependencies = {} } =
- await readPackageJSON(root);
- const externalPackages = [
- ...Object.keys(dependencies),
- ...Object.keys(peerDependencies),
- ];
- const packageConfig: UserConfig = {
- build: {
- lib: {
- entry: 'src/index.ts',
- fileName: () => 'index.mjs',
- formats: ['es'],
- },
- rollupOptions: {
- external: (id) => {
- return externalPackages.some(
- (pkg) => id === pkg || id.startsWith(`${pkg}/`),
- );
- },
- },
- },
- plugins,
- };
- const commonConfig = await getCommonConfig();
- const mergedConmonConfig = mergeConfig(commonConfig, packageConfig);
- return mergeConfig(mergedConmonConfig, vite);
- });
- }
- export { defineLibraryConfig };
|