Skip to content

Commit 6880611

Browse files
authored
Correctly bundle up for browser globals (jestjs#7661)
* use webpack over browserify for browser test * use webpack over rollup for browser build
1 parent 6c3d998 commit 6880611

File tree

4 files changed

+568
-824
lines changed

4 files changed

+568
-824
lines changed

karma.conf.js

+10-2
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,17 @@ module.exports = config => {
99
config.set({
1010
browsers: ['ChromeHeadless'],
1111
files: ['e2e/browser-support/browserTest.js'],
12-
frameworks: ['mocha', 'browserify'],
12+
frameworks: ['mocha'],
1313
preprocessors: {
14-
'e2e/browser-support/browserTest.js': ['browserify'],
14+
'e2e/browser-support/browserTest.js': ['webpack'],
15+
},
16+
webpack: {
17+
mode: 'development',
18+
},
19+
webpackMiddleware: {
20+
// webpack-dev-middleware configuration
21+
// i. e.
22+
stats: 'errors-only',
1523
},
1624
});
1725
};

package.json

+4-10
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@
1010
"ansi-regex": "^4.0.0",
1111
"ansi-styles": "^3.2.0",
1212
"babel-eslint": "^9.0.0",
13-
"browserify": "^16.1.0",
13+
"babel-loader": "^8.0.5",
14+
"camelcase": "^5.0.0",
1415
"chalk": "^2.0.1",
1516
"codecov": "^3.0.0",
1617
"debug": "^4.0.1",
@@ -38,9 +39,9 @@
3839
"jest-snapshot-serializer-raw": "^1.1.0",
3940
"jquery": "^3.2.1",
4041
"karma": "^3.1.4",
41-
"karma-browserify": "^6.0.0",
4242
"karma-chrome-launcher": "^2.1.1",
4343
"karma-mocha": "^1.3.0",
44+
"karma-webpack": "4.0.0-rc.5",
4445
"left-pad": "^1.1.1",
4546
"lerna": "3.10.5",
4647
"micromatch": "^3.1.10",
@@ -54,18 +55,11 @@
5455
"readable-stream": "^3.0.3",
5556
"resolve": "^1.4.0",
5657
"rimraf": "^2.6.2",
57-
"rollup": "^1.1.0",
58-
"rollup-plugin-babel": "^4.3.0",
59-
"rollup-plugin-commonjs": "^9.1.8",
60-
"rollup-plugin-flow": "^1.1.1",
61-
"rollup-plugin-json": "^3.1.0",
62-
"rollup-plugin-node-builtins": "^2.1.1",
63-
"rollup-plugin-node-resolve": "^4.0.0",
6458
"slash": "^2.0.0",
6559
"string-length": "^2.0.0",
6660
"strip-ansi": "^5.0.0",
6761
"typescript": "^3.0.3",
68-
"watchify": "^3.9.0"
62+
"webpack": "^4.28.4"
6963
},
7064
"scripts": {
7165
"build-clean": "rm -rf ./packages/*/build ./packages/*/build-es5",

scripts/browserBuild.js

+48-31
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,9 @@
77
'use strict';
88

99
const path = require('path');
10-
const rollup = require('rollup').rollup;
11-
const rollupResolve = require('rollup-plugin-node-resolve');
12-
const rollupCommonjs = require('rollup-plugin-commonjs');
13-
const rollupBuiltins = require('rollup-plugin-node-builtins');
14-
const rollupJson = require('rollup-plugin-json');
15-
const rollupBabel = require('rollup-plugin-babel');
16-
const rollupFlow = require('rollup-plugin-flow');
10+
const webpack = require('webpack');
11+
const camelCase = require('camelcase');
12+
const rimraf = require('rimraf');
1713

1814
const babelEs5Options = {
1915
// Dont load other config files
@@ -24,43 +20,64 @@ const babelEs5Options = {
2420
[
2521
'@babel/preset-env',
2622
{
27-
// Required for Rollup
28-
modules: false,
23+
// Required for Webpack
24+
modules: 'cjs',
2925
shippedProposals: true,
3026
// Target ES5
3127
targets: 'IE 11',
3228
},
3329
],
3430
'@babel/preset-flow',
3531
],
36-
runtimeHelpers: true,
3732
};
3833

3934
function browserBuild(pkgName, entryPath, destination) {
40-
return rollup({
41-
input: entryPath,
42-
plugins: [
35+
rimraf.sync(destination);
36+
37+
return new Promise((resolve, reject) => {
38+
webpack(
39+
/* eslint-disable sort-keys */
4340
{
44-
resolveId(id) {
45-
return id === 'chalk'
46-
? path.resolve(__dirname, '../packages/expect/build/fakeChalk.js')
47-
: undefined;
41+
mode: 'development',
42+
devtool: 'source-map',
43+
entry: entryPath,
44+
output: {
45+
path: path.dirname(destination),
46+
library: camelCase(pkgName),
47+
libraryTarget: 'umd',
48+
filename: path.basename(destination),
49+
},
50+
module: {
51+
rules: [
52+
{
53+
test: /\.[jt]sx?$/,
54+
loader: 'babel-loader',
55+
options: babelEs5Options,
56+
},
57+
],
58+
},
59+
resolve: {
60+
alias: {
61+
chalk: path.resolve(
62+
__dirname,
63+
'../packages/expect/build/fakeChalk.js'
64+
),
65+
},
66+
},
67+
node: {
68+
fs: 'empty',
4869
},
4970
},
50-
rollupFlow(),
51-
rollupJson(),
52-
rollupCommonjs(),
53-
rollupBabel(babelEs5Options),
54-
rollupBuiltins(),
55-
rollupResolve(),
56-
],
57-
}).then(bundle =>
58-
bundle.write({
59-
file: destination,
60-
format: 'umd',
61-
name: pkgName,
62-
})
63-
);
71+
/* eslint-enable */
72+
(err, stats) => {
73+
if (err || stats.hasErrors()) {
74+
reject(err || stats.toString());
75+
return;
76+
}
77+
resolve(stats);
78+
}
79+
);
80+
});
6481
}
6582

6683
module.exports = browserBuild;

0 commit comments

Comments
 (0)