@@ -11,42 +11,54 @@ const FAKE_PACKAGE_JSON = {
11
11
}
12
12
13
13
describe ( 'generateExports' , ( ) => {
14
- test ( 'no entries' , ( ) => {
15
- const results = generateExports ( FAKE_PACKAGE_JSON , cwd , { } )
16
- expect ( results ) . toMatchInlineSnapshot ( `
14
+ test ( 'no entries' , async ( ) => {
15
+ const results = generateExports ( FAKE_PACKAGE_JSON , cwd , { } , { } )
16
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
17
17
{
18
18
"exports": {
19
19
"./package.json": "./package.json",
20
20
},
21
21
"main": undefined,
22
22
"module": undefined,
23
+ "publishExports": undefined,
23
24
"types": undefined,
24
25
}
25
26
` )
26
27
} )
27
28
28
- test ( 'only one entry' , ( ) => {
29
- const results = generateExports ( FAKE_PACKAGE_JSON , cwd , {
30
- es : [ genChunk ( 'main.js' ) ] ,
31
- } )
32
- expect ( results ) . toMatchInlineSnapshot ( `
29
+ test ( 'only one entry' , async ( ) => {
30
+ const results = generateExports (
31
+ FAKE_PACKAGE_JSON ,
32
+ cwd ,
33
+ {
34
+ es : [ genChunk ( 'main.js' ) ] ,
35
+ } ,
36
+ { } ,
37
+ )
38
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
33
39
{
34
40
"exports": {
35
41
".": "./main.js",
36
42
"./package.json": "./package.json",
37
43
},
38
44
"main": "./main.js",
39
45
"module": "./main.js",
46
+ "publishExports": undefined,
40
47
"types": undefined,
41
48
}
42
49
` )
43
50
} )
44
51
45
- test ( 'index entry' , ( ) => {
46
- const results = generateExports ( FAKE_PACKAGE_JSON , cwd , {
47
- es : [ genChunk ( 'index.js' ) , genChunk ( 'foo.js' ) ] ,
48
- } )
49
- expect ( results ) . toMatchInlineSnapshot ( `
52
+ test ( 'index entry' , async ( ) => {
53
+ const results = generateExports (
54
+ FAKE_PACKAGE_JSON ,
55
+ cwd ,
56
+ {
57
+ es : [ genChunk ( 'index.js' ) , genChunk ( 'foo.js' ) ] ,
58
+ } ,
59
+ { } ,
60
+ )
61
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
50
62
{
51
63
"exports": {
52
64
".": "./index.js",
@@ -55,16 +67,22 @@ describe('generateExports', () => {
55
67
},
56
68
"main": "./index.js",
57
69
"module": "./index.js",
70
+ "publishExports": undefined,
58
71
"types": undefined,
59
72
}
60
73
` )
61
74
} )
62
75
63
- test ( 'multiple entries' , ( ) => {
64
- const results = generateExports ( FAKE_PACKAGE_JSON , cwd , {
65
- es : [ genChunk ( 'foo.js' ) , genChunk ( 'bar.js' ) ] ,
66
- } )
67
- expect ( results ) . toMatchInlineSnapshot ( `
76
+ test ( 'multiple entries' , async ( ) => {
77
+ const results = generateExports (
78
+ FAKE_PACKAGE_JSON ,
79
+ cwd ,
80
+ {
81
+ es : [ genChunk ( 'foo.js' ) , genChunk ( 'bar.js' ) ] ,
82
+ } ,
83
+ { } ,
84
+ )
85
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
68
86
{
69
87
"exports": {
70
88
"./bar": "./bar.js",
@@ -73,17 +91,23 @@ describe('generateExports', () => {
73
91
},
74
92
"main": undefined,
75
93
"module": undefined,
94
+ "publishExports": undefined,
76
95
"types": undefined,
77
96
}
78
97
` )
79
98
} )
80
99
81
- test ( 'dual formats' , ( ) => {
82
- const results = generateExports ( FAKE_PACKAGE_JSON , cwd , {
83
- es : [ genChunk ( 'foo.js' ) ] ,
84
- cjs : [ genChunk ( 'foo.cjs' ) ] ,
85
- } )
86
- expect ( results ) . toMatchInlineSnapshot ( `
100
+ test ( 'dual formats' , async ( ) => {
101
+ const results = generateExports (
102
+ FAKE_PACKAGE_JSON ,
103
+ cwd ,
104
+ {
105
+ es : [ genChunk ( 'foo.js' ) ] ,
106
+ cjs : [ genChunk ( 'foo.cjs' ) ] ,
107
+ } ,
108
+ { } ,
109
+ )
110
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
87
111
{
88
112
"exports": {
89
113
".": {
@@ -94,17 +118,23 @@ describe('generateExports', () => {
94
118
},
95
119
"main": "./foo.cjs",
96
120
"module": "./foo.js",
121
+ "publishExports": undefined,
97
122
"types": undefined,
98
123
}
99
124
` )
100
125
} )
101
126
102
- test ( 'dts' , ( ) => {
103
- const results = generateExports ( FAKE_PACKAGE_JSON , cwd , {
104
- es : [ genChunk ( 'foo.js' ) , genChunk ( 'foo.d.ts' ) ] ,
105
- cjs : [ genChunk ( 'foo.cjs' ) , genChunk ( 'foo.d.cts' ) ] ,
106
- } )
107
- expect ( results ) . toMatchInlineSnapshot ( `
127
+ test ( 'dts' , async ( ) => {
128
+ const results = generateExports (
129
+ FAKE_PACKAGE_JSON ,
130
+ cwd ,
131
+ {
132
+ es : [ genChunk ( 'foo.js' ) , genChunk ( 'foo.d.ts' ) ] ,
133
+ cjs : [ genChunk ( 'foo.cjs' ) , genChunk ( 'foo.d.cts' ) ] ,
134
+ } ,
135
+ { } ,
136
+ )
137
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
108
138
{
109
139
"exports": {
110
140
".": {
@@ -115,17 +145,23 @@ describe('generateExports', () => {
115
145
},
116
146
"main": "./foo.cjs",
117
147
"module": "./foo.js",
148
+ "publishExports": undefined,
118
149
"types": "./foo.d.cts",
119
150
}
120
151
` )
121
152
} )
122
153
123
- test ( 'fixed extension' , ( ) => {
124
- const results = generateExports ( FAKE_PACKAGE_JSON , cwd , {
125
- es : [ genChunk ( 'index.mjs' ) , genChunk ( 'index.d.mts' ) ] ,
126
- cjs : [ genChunk ( 'index.cjs' ) , genChunk ( 'index.d.cts' ) ] ,
127
- } )
128
- expect ( results ) . toMatchInlineSnapshot ( `
154
+ test ( 'fixed extension' , async ( ) => {
155
+ const results = generateExports (
156
+ FAKE_PACKAGE_JSON ,
157
+ cwd ,
158
+ {
159
+ es : [ genChunk ( 'index.mjs' ) , genChunk ( 'index.d.mts' ) ] ,
160
+ cjs : [ genChunk ( 'index.cjs' ) , genChunk ( 'index.d.cts' ) ] ,
161
+ } ,
162
+ { } ,
163
+ )
164
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
129
165
{
130
166
"exports": {
131
167
".": {
@@ -136,13 +172,136 @@ describe('generateExports', () => {
136
172
},
137
173
"main": "./index.cjs",
138
174
"module": "./index.mjs",
175
+ "publishExports": undefined,
139
176
"types": "./index.d.cts",
140
177
}
141
178
` )
142
179
} )
180
+
181
+ test ( 'dev exports: dev condition' , async ( ) => {
182
+ const results = await generateExports (
183
+ FAKE_PACKAGE_JSON ,
184
+ cwd ,
185
+ { es : [ genChunk ( 'index.js' ) ] , cjs : [ genChunk ( 'index.cjs' ) ] } ,
186
+ { devExports : 'dev' } ,
187
+ )
188
+ // key order matters
189
+ expect ( JSON . stringify ( results , undefined , 2 ) ) . toMatchInlineSnapshot ( `
190
+ "{
191
+ "main": "./index.cjs",
192
+ "module": "./index.js",
193
+ "exports": {
194
+ ".": {
195
+ "dev": "./SRC/index.js",
196
+ "import": "./index.js",
197
+ "require": "./index.cjs"
198
+ },
199
+ "./package.json": "./package.json"
200
+ },
201
+ "publishExports": {
202
+ ".": {
203
+ "import": "./index.js",
204
+ "require": "./index.cjs"
205
+ },
206
+ "./package.json": "./package.json"
207
+ }
208
+ }"
209
+ ` )
210
+ } )
211
+
212
+ test ( 'dev exports: all conditions' , async ( ) => {
213
+ const results = generateExports (
214
+ FAKE_PACKAGE_JSON ,
215
+ cwd ,
216
+ { es : [ genChunk ( 'index.js' ) ] , cjs : [ genChunk ( 'index.cjs' ) ] } ,
217
+ { devExports : true } ,
218
+ )
219
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
220
+ {
221
+ "exports": {
222
+ ".": "./SRC/index.js",
223
+ "./package.json": "./package.json",
224
+ },
225
+ "main": "./index.cjs",
226
+ "module": "./index.js",
227
+ "publishExports": {
228
+ ".": {
229
+ "import": "./index.js",
230
+ "require": "./index.cjs",
231
+ },
232
+ "./package.json": "./package.json",
233
+ },
234
+ "types": undefined,
235
+ }
236
+ ` )
237
+ } )
238
+
239
+ test ( 'customExports' , async ( ) => {
240
+ const results = await generateExports (
241
+ FAKE_PACKAGE_JSON ,
242
+ cwd ,
243
+ { es : [ genChunk ( 'index.js' ) ] } ,
244
+ {
245
+ devExports : 'dev' ,
246
+ customExports ( exports ) {
247
+ exports [ './TEST' ] = './TEST'
248
+ return Promise . resolve ( exports )
249
+ } ,
250
+ } ,
251
+ )
252
+ // key order matters
253
+ expect ( JSON . stringify ( results , undefined , 2 ) ) . toMatchInlineSnapshot ( `
254
+ "{
255
+ "main": "./index.js",
256
+ "module": "./index.js",
257
+ "exports": {
258
+ ".": {
259
+ "dev": "./SRC/index.js",
260
+ "default": "./index.js"
261
+ },
262
+ "./package.json": "./package.json",
263
+ "./TEST": "./TEST"
264
+ },
265
+ "publishExports": {
266
+ ".": "./index.js",
267
+ "./package.json": "./package.json",
268
+ "./TEST": "./TEST"
269
+ }
270
+ }"
271
+ ` )
272
+ } )
273
+
274
+ test ( 'export all' , async ( ) => {
275
+ const results = generateExports (
276
+ FAKE_PACKAGE_JSON ,
277
+ cwd ,
278
+ { es : [ genChunk ( 'index.js' ) ] , cjs : [ genChunk ( 'index.cjs' ) ] } ,
279
+ { all : true } ,
280
+ )
281
+ await expect ( results ) . resolves . toMatchInlineSnapshot ( `
282
+ {
283
+ "exports": {
284
+ ".": {
285
+ "import": "./index.js",
286
+ "require": "./index.cjs",
287
+ },
288
+ "./*": "./*",
289
+ },
290
+ "main": "./index.cjs",
291
+ "module": "./index.js",
292
+ "publishExports": undefined,
293
+ "types": undefined,
294
+ }
295
+ ` )
296
+ } )
143
297
} )
144
298
145
299
function genChunk ( fileName : string ) {
146
300
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
147
- return { type : 'chunk' , fileName, isEntry : true } as OutputChunk
301
+ return {
302
+ type : 'chunk' ,
303
+ fileName,
304
+ isEntry : true ,
305
+ facadeModuleId : `./SRC/${ fileName } ` ,
306
+ } as OutputChunk
148
307
}
0 commit comments