@@ -105,43 +105,47 @@ export const setup = (build, _options) => {
105105 } ) ;
106106
107107 if ( emitDts ) {
108- /** @type {('.d.css.ts'|'.css.d.ts')[] } */
109- const dtsExts = [ ] ;
110- /** @type {import('./index.js').EmitDts } */
111- let outdirs = { } ;
112- if ( emitDts === '.d.css.ts' || emitDts === '.css.d.ts' ) {
113- dtsExts . push ( emitDts ) ;
114- } else if ( emitDts === true ) {
115- dtsExts . push ( '.d.css.ts' , '.css.d.ts' ) ;
116- } else if ( typeof emitDts === 'object' ) {
117- outdirs = { ...emitDts } ;
118- if ( emitDts [ '*' ] ) {
108+ if ( rpath . startsWith ( '..' ) ) {
109+ log ( `skip emit dts for file outside of build root:` , rpath ) ;
110+ } else {
111+ /** @type {('.d.css.ts'|'.css.d.ts')[] } */
112+ const dtsExts = [ ] ;
113+ /** @type {import('./index.js').EmitDts } */
114+ let outdirs = { } ;
115+ if ( emitDts === '.d.css.ts' || emitDts === '.css.d.ts' ) {
116+ dtsExts . push ( emitDts ) ;
117+ } else if ( emitDts === true ) {
119118 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- }
124- }
125- const outdir = resolve ( buildRoot , patchedBuild . initialOptions . outdir ?? '' ) ;
126- const outbase = patchedBuild . initialOptions . outbase ;
127- dtsExts . forEach ( async ( dtsExt ) => {
128- 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 ) ;
119+ } else if ( typeof emitDts === 'object' ) {
120+ outdirs = { ...emitDts } ;
121+ if ( emitDts [ '*' ] ) {
122+ dtsExts . push ( '.d.css.ts' , '.css.d.ts' ) ;
123+ } else {
124+ emitDts [ '.css.d.ts' ] && dtsExts . push ( '.css.d.ts' ) ;
125+ emitDts [ '.d.css.ts' ] && dtsExts . push ( '.d.css.ts' ) ;
126+ }
132127 }
133- if ( outbase ) {
134- let normalized = normalize ( outbase ) ;
135- if ( normalized . endsWith ( sep ) ) {
136- normalized = compact ( normalized . split ( sep ) ) . join ( sep ) ;
128+ const outdir = resolve ( buildRoot , patchedBuild . initialOptions . outdir ?? '' ) ;
129+ const outbase = patchedBuild . initialOptions . outbase ;
130+ dtsExts . forEach ( async ( dtsExt ) => {
131+ let outDtsfile = resolve ( outdir , rpath ) . replace ( / \. c s s $ / i, dtsExt ) ;
132+ const dtsOutdir = outdirs [ dtsExt ] || outdirs [ '*' ] ;
133+ if ( dtsOutdir ) {
134+ outDtsfile = resolve ( buildRoot , dtsOutdir , rpath ) . replace ( / \. c s s $ / i, dtsExt ) ;
137135 }
138- if ( normalized !== '.' ) {
139- outDtsfile = resolve ( outDtsfile . replace ( normalized , '' ) ) ;
136+ if ( outbase ) {
137+ let normalized = normalize ( outbase ) ;
138+ if ( normalized . endsWith ( sep ) ) {
139+ normalized = compact ( normalized . split ( sep ) ) . join ( sep ) ;
140+ }
141+ if ( normalized !== '.' ) {
142+ outDtsfile = resolve ( outDtsfile . replace ( normalized , '' ) ) ;
143+ }
140144 }
141- }
142- log ( `emit typescript declarations file:` , patchedBuild . context . relative ( outDtsfile ) ) ;
143- await ensureFile ( outDtsfile , buildResult ?. dts ?? '' ) ;
144- } ) ;
145+ log ( `emit dts:` , patchedBuild . context . relative ( outDtsfile ) ) ;
146+ await ensureFile ( outDtsfile , buildResult ?. dts ?? '' ) ;
147+ } ) ;
148+ }
145149 }
146150
147151 if ( ! bundle && forceBuild ) {
0 commit comments