diff --git a/packages/cli/src/exports/create.ts b/packages/cli/src/exports/create.ts index 62ce9d5..bf25c44 100644 --- a/packages/cli/src/exports/create.ts +++ b/packages/cli/src/exports/create.ts @@ -9,9 +9,15 @@ import type { IPluginAPI } from './pluginAPI' export interface IConfig extends IProjectConfig { libBuild: ILibBuildConfig - lint: Partial - changelog: Partial - release: Partial + lint: ILintConfig + changelog: IChangelogConfig + release: IReleaseConfig +} + +type IDeepPartial = { + [K in keyof T]?: + | (T[K] extends Record ? IDeepPartial : T[K]) + | undefined } export type IPlugin = IPluginBase<(api: IPluginAPI) => void> @@ -23,4 +29,4 @@ export interface IPreset { export const createPlugin = (plugin: IPlugin) => plugin export const createPreset = (preset: IPreset) => preset -export const defineConfig = (config: Partial) => config +export const defineConfig = (config: IDeepPartial) => config diff --git a/packages/plugin-build-lib/src/plugin/config.ts b/packages/plugin-build-lib/src/plugin/config.ts index bb3f337..44347cf 100644 --- a/packages/plugin-build-lib/src/plugin/config.ts +++ b/packages/plugin-build-lib/src/plugin/config.ts @@ -6,12 +6,14 @@ export const libBuildSchema = createSchema((joi) => targets: joi.array(), pointPkgs: joi.array(), pkgOrder: joi.array(), - rollupChain: joi.function() + rollupChain: joi.function(), + rollTypes: joi.boolean() }) ) export const defaultLibBuildConfig: () => ILibBuildConfig = () => { return { - targets: [] + targets: [], + rollTypes: false } } diff --git a/packages/plugin-build-lib/src/plugin/types.ts b/packages/plugin-build-lib/src/plugin/types.ts index 1af19db..d401896 100644 --- a/packages/plugin-build-lib/src/plugin/types.ts +++ b/packages/plugin-build-lib/src/plugin/types.ts @@ -74,4 +74,5 @@ export interface ILibBuildConfig { * shared should be roll before core */ pkgOrder?: string[] + rollTypes?: boolean } diff --git a/packages/plugin-cmd-lib/src/plugin.ts b/packages/plugin-cmd-lib/src/plugin.ts index 891e2ee..c3a21d2 100644 --- a/packages/plugin-cmd-lib/src/plugin.ts +++ b/packages/plugin-cmd-lib/src/plugin.ts @@ -39,7 +39,7 @@ export default createPlugin({ DefaultTargets.includes(target) ) as ILibBuildTargets[] } - if (args?.rollTypes) { + if (args?.rollTypes || config?.rollTypes) { targets.push('rollTypes') }