@@ -13,6 +13,7 @@ const path = require('path');
13
13
const chalk = require ( 'chalk' ) ;
14
14
const { sync : readPkg } = require ( 'read-pkg' ) ;
15
15
const stringLength = require ( 'string-length' ) ;
16
+ const webpack = require ( 'webpack' ) ;
16
17
const nodeExternals = require ( 'webpack-node-externals' ) ;
17
18
const rootPackage = require ( '../package.json' ) ;
18
19
@@ -62,7 +63,9 @@ function getPackages() {
62
63
Object . assign ( mem , { [ curr . replace ( / \. j s $ / , '' ) ] : curr } ) ,
63
64
{ } ,
64
65
) ,
65
- ...( pkg . name === 'jest-circus' ? { './runner' : './build/runner.js' } : { } ) ,
66
+ ...( pkg . name === 'jest-circus'
67
+ ? { './runner' : './build/runner.js' }
68
+ : { } ) ,
66
69
...( pkg . name === 'expect'
67
70
? { './build/matchers' : './build/matchers.js' }
68
71
: { } ) ,
@@ -130,6 +133,17 @@ module.exports.PACKAGES_DIR = PACKAGES_DIR;
130
133
131
134
module . exports . INLINE_REQUIRE_EXCLUDE_LIST = INLINE_REQUIRE_EXCLUDE_LIST ;
132
135
136
+ const copyrightSnippet = `
137
+ /**
138
+ * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved.
139
+ *
140
+ * This source code is licensed under the MIT license found in the
141
+ * LICENSE file in the root directory of this source tree.
142
+ */
143
+ ` . trim ( ) ;
144
+
145
+ module . exports . copyrightSnippet = copyrightSnippet ;
146
+
133
147
function createWebpackConfigs ( ) {
134
148
const babelConfig = require ( '../babel.config.js' ) ;
135
149
const packages = getPackages ( ) ;
@@ -163,7 +177,7 @@ function createWebpackConfigs() {
163
177
} ) ;
164
178
}
165
179
166
- const workerEntriesEntries =
180
+ const separateChunks =
167
181
pkg . name === 'jest-worker'
168
182
? {
169
183
processChild : path . resolve (
@@ -181,6 +195,27 @@ function createWebpackConfigs() {
181
195
? { CoverageWorker : path . resolve ( packageDir , './src/CoverageWorker.ts' ) }
182
196
: pkg . name === 'jest-runner'
183
197
? { testWorker : path . resolve ( packageDir , './src/testWorker.ts' ) }
198
+ : pkg . name === 'jest-circus'
199
+ ? {
200
+ jestAdapterInit : path . resolve (
201
+ packageDir ,
202
+ './src/legacy-code-todo-rewrite/jestAdapterInit.ts' ,
203
+ ) ,
204
+ }
205
+ : pkg . name === 'jest-jasmine2'
206
+ ? {
207
+ 'jasmine/jasmineLight' : path . resolve (
208
+ packageDir ,
209
+ './src/jasmine/jasmineLight.ts' ,
210
+ ) ,
211
+ jestExpect : path . resolve ( packageDir , './src/jestExpect.ts' ) ,
212
+ setup_jest_globals : path . resolve (
213
+ packageDir ,
214
+ './src/setup_jest_globals.ts' ,
215
+ ) ,
216
+ }
217
+ : pkg . name === 'jest-repl'
218
+ ? { repl : path . resolve ( packageDir , './src/cli/repl.ts' ) }
184
219
: { } ;
185
220
186
221
const extraEntryPoints =
@@ -210,10 +245,11 @@ function createWebpackConfigs() {
210
245
packageDir,
211
246
pkg,
212
247
webpackConfig : {
248
+ context : packageDir ,
213
249
devtool : false ,
214
250
entry : {
215
251
index : input ,
216
- ...workerEntriesEntries ,
252
+ ...separateChunks ,
217
253
...extraEntryPoints ,
218
254
} ,
219
255
externals : nodeExternals ( ) ,
@@ -229,14 +265,20 @@ function createWebpackConfigs() {
229
265
} ,
230
266
] ,
231
267
} ,
268
+ optimization : {
269
+ moduleIds : 'named' ,
270
+ } ,
232
271
output : {
233
272
filename : '[name].js' ,
234
273
library : {
235
274
type : 'commonjs2' ,
236
275
} ,
237
276
path : path . resolve ( packageDir , 'build' ) ,
238
277
} ,
239
- plugins : [ new IgnoreDynamicRequire ( workerEntriesEntries ) ] ,
278
+ plugins : [
279
+ new webpack . BannerPlugin ( copyrightSnippet ) ,
280
+ new IgnoreDynamicRequire ( separateChunks ) ,
281
+ ] ,
240
282
resolve : {
241
283
extensions : [ '.ts' , '.js' ] ,
242
284
} ,
@@ -260,30 +302,28 @@ class IgnoreDynamicRequire {
260
302
. for ( 'javascript/auto' )
261
303
. tap ( 'IgnoreDynamicRequire' , parser => {
262
304
// This is a SyncBailHook, so returning anything stops the parser, and nothing (undefined) allows to continue
263
- const ignoreRequireCallExpression = expression => {
264
- if ( expression . arguments . length === 0 ) {
265
- return undefined ;
266
- }
267
- const arg = parser . evaluateExpression ( expression . arguments [ 0 ] ) ;
268
- if ( arg . isString ( ) && ! arg . string . startsWith ( '.' ) ) {
269
- return true ;
270
- }
271
- if ( ! arg . isString ( ) && ! arg . isConditional ( ) ) {
272
- return true ;
273
- }
274
-
275
- if ( arg . isString ( ) && this . separateFiles . has ( arg . string ) ) {
276
- return true ;
277
- }
278
- return undefined ;
279
- } ;
280
-
281
305
parser . hooks . call
282
306
. for ( 'require' )
283
- . tap ( 'IgnoreDynamicRequire' , ignoreRequireCallExpression ) ;
307
+ . tap ( 'IgnoreDynamicRequire' , expression => {
308
+ if ( expression . arguments . length === 0 ) {
309
+ return undefined ;
310
+ }
311
+ const arg = parser . evaluateExpression ( expression . arguments [ 0 ] ) ;
312
+ if ( arg . isString ( ) && ! arg . string . startsWith ( '.' ) ) {
313
+ return true ;
314
+ }
315
+ if ( ! arg . isString ( ) && ! arg . isConditional ( ) ) {
316
+ return true ;
317
+ }
318
+
319
+ if ( arg . isString ( ) && this . separateFiles . has ( arg . string ) ) {
320
+ return true ;
321
+ }
322
+ return undefined ;
323
+ } ) ;
284
324
parser . hooks . call
285
325
. for ( 'require.resolve' )
286
- . tap ( 'IgnoreDynamicRequire' , ignoreRequireCallExpression ) ;
326
+ . tap ( 'IgnoreDynamicRequire' , ( ) => true ) ;
287
327
} ) ;
288
328
} ) ;
289
329
}
0 commit comments