@@ -15,13 +15,15 @@ const NPM_IGNORE = fs.existsSync('.npmignore') ? '.npmignore' : '../../.npmignor
15
15
16
16
const ASSETS = [ 'README.md' , 'LICENSE' , 'package.json' , NPM_IGNORE ] as const ;
17
17
const ENTRY_POINTS = [ 'main' , 'module' , 'types' , 'browser' ] as const ;
18
+ const CONDITIONAL_EXPORT_ENTRY_POINTS = [ 'import' , 'require' , ...ENTRY_POINTS ] as const ;
18
19
const EXPORT_MAP_ENTRY_POINT = 'exports' ;
19
20
const TYPES_VERSIONS_ENTRY_POINT = 'typesVersions' ;
20
21
21
22
const packageWithBundles = process . argv . includes ( '--bundles' ) ;
22
23
const buildDir = packageWithBundles ? NPM_BUILD_DIR : BUILD_DIR ;
23
24
24
25
type PackageJsonEntryPoints = Record < ( typeof ENTRY_POINTS ) [ number ] , string > ;
26
+ type ConditionalExportEntryPoints = Record < ( typeof CONDITIONAL_EXPORT_ENTRY_POINTS ) [ number ] , string > ;
25
27
26
28
interface TypeVersions {
27
29
[ key : string ] : {
@@ -30,15 +32,8 @@ interface TypeVersions {
30
32
}
31
33
32
34
interface PackageJson extends Record < string , unknown > , PackageJsonEntryPoints {
33
- [ EXPORT_MAP_ENTRY_POINT ] : {
34
- [ key : string ] : {
35
- import : string ;
36
- require : string ;
37
- types : string ;
38
- node : string ;
39
- browser : string ;
40
- default : string ;
41
- } ;
35
+ [ EXPORT_MAP_ENTRY_POINT ] : Partial < ConditionalExportEntryPoints > & {
36
+ [ key : string ] : Partial < ConditionalExportEntryPoints > ;
42
37
} ;
43
38
[ TYPES_VERSIONS_ENTRY_POINT ] : TypeVersions ;
44
39
}
@@ -77,6 +72,13 @@ ENTRY_POINTS.filter(entryPoint => newPkgJson[entryPoint]).forEach(entryPoint =>
77
72
78
73
if ( newPkgJson [ EXPORT_MAP_ENTRY_POINT ] ) {
79
74
Object . entries ( newPkgJson [ EXPORT_MAP_ENTRY_POINT ] ) . forEach ( ( [ key , val ] ) => {
75
+ if ( typeof val === 'string' ) {
76
+ // case 1: key is already a conditional export entry point
77
+ // @ts -expect-error I'm too dumb for TS :'D
78
+ newPkgJson [ EXPORT_MAP_ENTRY_POINT ] [ key ] = val . replace ( `${ buildDir } /` , '' ) ;
79
+ return ;
80
+ }
81
+ // case 2: key is a sub-path export
80
82
newPkgJson [ EXPORT_MAP_ENTRY_POINT ] [ key ] = Object . entries ( val ) . reduce (
81
83
( acc , [ key , val ] ) => {
82
84
return { ...acc , [ key ] : val . replace ( `${ buildDir } /` , '' ) } ;
@@ -90,7 +92,10 @@ if (newPkgJson[TYPES_VERSIONS_ENTRY_POINT]) {
90
92
Object . entries ( newPkgJson [ TYPES_VERSIONS_ENTRY_POINT ] ) . forEach ( ( [ key , val ] ) => {
91
93
newPkgJson [ TYPES_VERSIONS_ENTRY_POINT ] [ key ] = Object . entries ( val ) . reduce ( ( acc , [ key , val ] ) => {
92
94
const newKey = key . replace ( `${ buildDir } /` , '' ) ;
93
- return { ...acc , [ newKey ] : val . map ( v => v . replace ( `${ buildDir } /` , '' ) ) } ;
95
+ return {
96
+ ...acc ,
97
+ [ newKey ] : val . map ( v => v . replace ( `${ buildDir } /` , '' ) ) ,
98
+ } ;
94
99
} , { } ) ;
95
100
} ) ;
96
101
}
0 commit comments