@@ -105,16 +105,31 @@ export const setup = (build, _options) => {
105105 } ) ;
106106
107107 if ( emitDts ) {
108+ /** @type {('.d.css.ts'|'.css.d.ts')[] } */
108109 const dtsExts = [ ] ;
110+ /** @type {import('./index.js').EmitDts } */
111+ let outdirs = { } ;
109112 if ( emitDts === '.d.css.ts' || emitDts === '.css.d.ts' ) {
110113 dtsExts . push ( emitDts ) ;
111- } else {
114+ } else if ( emitDts === true ) {
112115 dtsExts . push ( '.d.css.ts' , '.css.d.ts' ) ;
116+ } else if ( typeof emitDts === 'object' ) {
117+ outdirs = { ...emitDts } ;
118+ if ( emitDts [ '*' ] ) {
119+ dtsExts . push ( '.d.css.ts' , '.css.d.ts' ) ;
120+ } else {
121+ emitDts [ '.css.d.ts' ] && dtsExts . push ( '.css.d.ts' ) ;
122+ emitDts [ '.d.css.ts' ] && dtsExts . push ( '.d.css.ts' ) ;
123+ }
113124 }
114125 const outdir = resolve ( buildRoot , patchedBuild . initialOptions . outdir ?? '' ) ;
115126 const outbase = patchedBuild . initialOptions . outbase ;
116127 dtsExts . forEach ( async ( dtsExt ) => {
117128 let outDtsfile = resolve ( outdir , rpath ) . replace ( / \. c s s $ / i, dtsExt ) ;
129+ const dtsOutdir = outdirs [ dtsExt ] || outdirs [ '*' ] ;
130+ if ( dtsOutdir ) {
131+ outDtsfile = resolve ( buildRoot , dtsOutdir , rpath ) . replace ( / \. c s s $ / i, dtsExt ) ;
132+ }
118133 if ( outbase ) {
119134 let normalized = normalize ( outbase ) ;
120135 if ( normalized . endsWith ( sep ) ) {
@@ -248,13 +263,13 @@ export const setup = (build, _options) => {
248263 } ) ;
249264
250265 await Promise . all ( [
251- ...( moduleJsFiles . map ( ( [ src , dist ] ) => {
266+ ...moduleJsFiles . map ( ( [ src , dist ] ) => {
252267 const fp = resolve ( buildRoot , dist ) ;
253268 const filename = basename ( src ) + outJsExt ;
254269 const finalPath = resolve ( dirname ( fp ) , filename ) ;
255270 log ( `rename ${ dist } to ${ filename } ` ) ;
256271 return rename ( fp , finalPath ) ;
257- } ) ) ,
272+ } ) ,
258273 ...jsFiles . map ( ( [ js , places ] ) => {
259274 const fulljs = resolve ( buildRoot , js ) ;
260275 return readFile ( fulljs , { encoding : 'utf8' } )
0 commit comments