@@ -10,6 +10,8 @@ const sourceFiles = glob
1010
1111const indexTypings = glob . sync ( `${ root } /src/index.d.ts` ) ;
1212
13+ const ENV_AGNOSTIC_ROOT = `${ root } /dist/dynamic`
14+
1315async function copyTypings ( files , dest ) {
1416 const cmds = [ ] ;
1517 files . forEach ( ( file ) => {
@@ -22,29 +24,39 @@ async function copyTypings(files, dest) {
2224async function createPackage ( file ) {
2325 const fileName = file . split ( '/' ) . pop ( ) ;
2426 const esmSource = glob . sync ( `${ root } /dist/esm/${ fileName } /**/index.js` ) [ 0 ] ;
27+ const cjsSource = glob . sync ( `${ root } /dist/cjs/${ fileName } /**/index.js` ) [ 0 ] ;
28+ const typingsSource = glob . sync ( `${ root } /dist/esm/${ fileName } /**/index.d.ts` ) [ 0 ]
2529 /**
2630 * Prevent creating package.json for directories with no JS files (like CSS directories)
2731 */
2832 if ( ! esmSource ) {
2933 return ;
3034 }
3135
32- const destFile = `${ path . resolve ( `${ root } /dist/esm` , fileName ) } /package.json` ;
36+ const destDir = path . resolve ( `${ ENV_AGNOSTIC_ROOT } ` , fileName )
37+ const destFile = `${ destDir } /package.json` ;
38+
39+ // ensure the directory exists
40+ fse . ensureDirSync ( destDir )
3341
34- const esmRelative = path . relative ( file . replace ( '/dist/esm' , '' ) , esmSource ) ;
42+ const esmRelative = path . relative ( file , esmSource ) . replace ( '/dist' , '' ) ;
43+ const cjsRelative = path . relative ( file , cjsSource ) . replace ( '/dist' , '' ) ;
44+ const tsRelative = path . relative ( file , typingsSource ) . replace ( '/dist' , '' )
3545 const content = {
36- main : 'index.js' ,
46+ main : cjsRelative ,
3747 module : esmRelative ,
3848 } ;
3949 const typings = glob . sync ( `${ root } /src/${ fileName } /*.d.ts` ) ;
4050 const cmds = [ ] ;
41- content . typings = 'index.d.ts' ;
51+ content . typings = tsRelative ;
4252 cmds . push ( copyTypings ( typings , `${ root } /dist/${ fileName } ` ) ) ;
4353 cmds . push ( fse . writeJSON ( destFile , content ) ) ;
4454 return Promise . all ( cmds ) ;
4555}
4656
4757async function generatePackages ( files ) {
58+ // ensure the dynamic root exists
59+ fse . ensureDirSync ( path . resolve ( ENV_AGNOSTIC_ROOT ) )
4860 const cmds = files . map ( ( file ) => createPackage ( file ) ) ;
4961 return Promise . all ( cmds ) ;
5062}
0 commit comments