Skip to content

Commit 3f99fa7

Browse files
authored
Build system: upgrade webpack (#7935)
* Upgrade webpack to 5; gulp build works * Fix karma, except events * Uniform access to events, import * or require (import * from 'events.js' / import events from 'events.js' return different objects, which is a problem for stubbing) * Fix (?) adapters that use `this` inappropriately * Update webpack-bundle-analyzer * Fix warnings * Enable tree shaking * Set webpack mode 'none' (or else tests fail (!)) * Update coreJS version in babelrc - #7943 * Use babel to translate to commonjs only for unit tests; enable production mode * Merge master * Add fsevents as optional dep
1 parent 1942c66 commit 3f99fa7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

52 files changed

+19821
-28534
lines changed

.babelrc.js

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1 @@
1-
2-
let path = require('path');
3-
4-
function useLocal(module) {
5-
return require.resolve(module, {
6-
paths: [
7-
__dirname
8-
]
9-
})
10-
}
11-
12-
module.exports = {
13-
"presets": [
14-
[
15-
useLocal('@babel/preset-env'),
16-
{
17-
"useBuiltIns": "entry",
18-
"corejs": "3.13.0"
19-
}
20-
]
21-
],
22-
"plugins": [
23-
path.resolve(__dirname, './plugins/pbjsGlobals.js'),
24-
useLocal('babel-plugin-transform-object-assign')
25-
]
26-
};
1+
module.exports = require('./babelConfig.js')();

babelConfig.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
let path = require('path');
3+
4+
function useLocal(module) {
5+
return require.resolve(module, {
6+
paths: [
7+
__dirname
8+
]
9+
})
10+
}
11+
12+
module.exports = function (test = false) {
13+
return {
14+
'presets': [
15+
[
16+
useLocal('@babel/preset-env'),
17+
{
18+
'useBuiltIns': 'entry',
19+
'corejs': '3.13.0',
20+
// a lot of tests use sinon.stub & others that stopped working on ES6 modules with webpack 5
21+
'modules': test ? 'commonjs' : 'auto',
22+
}
23+
]
24+
],
25+
'plugins': [
26+
path.resolve(__dirname, './plugins/pbjsGlobals.js'),
27+
useLocal('babel-plugin-transform-object-assign'),
28+
],
29+
}
30+
}

gulpfile.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ var gutil = require('gulp-util');
88
var connect = require('gulp-connect');
99
var webpack = require('webpack');
1010
var webpackStream = require('webpack-stream');
11-
var terser = require('gulp-terser');
1211
var gulpClean = require('gulp-clean');
1312
var KarmaServer = require('karma').Server;
1413
var karmaConfMaker = require('./karma.conf.maker.js');
@@ -117,7 +116,10 @@ viewReview.displayName = 'view-review';
117116

118117
function makeDevpackPkg() {
119118
var cloned = _.cloneDeep(webpackConfig);
120-
cloned.devtool = 'source-map';
119+
Object.assign(cloned, {
120+
devtool: 'source-map',
121+
mode: 'development'
122+
})
121123
var externalModules = helpers.getArgModules();
122124

123125
const analyticsSources = helpers.getAnalyticsSources();
@@ -142,7 +144,6 @@ function makeWebpackPkg() {
142144
return gulp.src([].concat(moduleSources, analyticsSources, 'src/prebid.js'))
143145
.pipe(helpers.nameModules(externalModules))
144146
.pipe(webpackStream(cloned, webpack))
145-
.pipe(terser())
146147
.pipe(gulpif(file => file.basename === 'prebid-core.js', header(banner, { prebid: prebid })))
147148
.pipe(gulp.dest('build/dist'));
148149
}

karma.conf.maker.js

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
//
33
// For more information, see http://karma-runner.github.io/1.0/config/configuration-file.html
44

5+
const babelConfig = require('./babelConfig.js');
56
var _ = require('lodash');
67
var webpackConf = require('./webpack.conf.js');
78
var karmaConstants = require('karma').constants;
@@ -10,10 +11,19 @@ function newWebpackConfig(codeCoverage) {
1011
// Make a clone here because we plan on mutating this object, and don't want parallel tasks to trample each other.
1112
var webpackConfig = _.cloneDeep(webpackConf);
1213

13-
// remove optimize plugin for tests
14-
webpackConfig.plugins.pop()
14+
Object.assign(webpackConfig, {
15+
mode: 'development',
16+
devtool: 'inline-source-map',
17+
});
1518

16-
webpackConfig.devtool = 'inline-source-map';
19+
delete webpackConfig.entry;
20+
21+
webpackConfig.module.rules
22+
.flatMap((r) => r.use)
23+
.filter((use) => use.loader === 'babel-loader')
24+
.forEach((use) => {
25+
use.options = babelConfig(true);
26+
});
1727

1828
if (codeCoverage) {
1929
webpackConfig.module.rules.push({

modules/dfpAdServerVideo.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { config } from '../src/config.js';
99
import { getHook, submodule } from '../src/hook.js';
1010
import { auctionManager } from '../src/auctionManager.js';
1111
import { gdprDataHandler, uspDataHandler } from '../src/adapterManager.js';
12-
import events from '../src/events.js';
12+
import * as events from '../src/events.js';
1313
import CONSTANTS from '../src/constants.json';
1414

1515
/**

modules/gdprEnforcement.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {find, includes} from '../src/polyfill.js';
99
import {registerSyncInner} from '../src/adapters/bidderFactory.js';
1010
import {getHook} from '../src/hook.js';
1111
import {validateStorageEnforcement} from '../src/storageManager.js';
12-
import events from '../src/events.js';
12+
import * as events from '../src/events.js';
1313
import CONSTANTS from '../src/constants.json';
1414

1515
const TCF2 = {

modules/id5AnalyticsAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import CONSTANTS from '../src/constants.json';
33
import adapterManager from '../src/adapterManager.js';
44
import { ajax } from '../src/ajax.js';
55
import { logInfo, logError } from '../src/utils.js';
6-
import events from '../src/events.js';
6+
import * as events from '../src/events.js';
77

88
const {
99
EVENTS: {

modules/ixBidAdapter.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import {BANNER, VIDEO} from '../src/mediaTypes.js';
2020
import {config} from '../src/config.js';
2121
import CONSTANTS from '../src/constants.json';
2222
import {getStorageManager, validateStorageEnforcement} from '../src/storageManager.js';
23-
import events from '../src/events.js';
23+
import * as events from '../src/events.js';
2424
import {find, includes} from '../src/polyfill.js';
2525
import {registerBidder} from '../src/adapters/bidderFactory.js';
2626
import {INSTREAM, OUTSTREAM} from '../src/video.js';

modules/multibid/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {setupBeforeHookFnOnce, getHook} from '../../src/hook.js';
88
import {
99
logWarn, deepAccess, getUniqueIdentifierStr, deepSetValue, groupBy
1010
} from '../../src/utils.js';
11-
import events from '../../src/events.js';
11+
import * as events from '../../src/events.js';
1212
import CONSTANTS from '../../src/constants.json';
1313
import {addBidderRequests} from '../../src/auction.js';
1414
import {getHighestCpmBidsFromBidPool, sortByDealAndPriceBucketOrCpm} from '../../src/targeting.js';

modules/prebidServerBidAdapter/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import adapterManager from '../../src/adapterManager.js';
3333
import { config } from '../../src/config.js';
3434
import { VIDEO, NATIVE } from '../../src/mediaTypes.js';
3535
import { isValid } from '../../src/adapters/bidderFactory.js';
36-
import events from '../../src/events.js';
36+
import * as events from '../../src/events.js';
3737
import {find, includes} from '../../src/polyfill.js';
3838
import { S2S_VENDORS } from './config.js';
3939
import { ajax } from '../../src/ajax.js';

modules/priceFloors.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {
1717
import {getGlobal} from '../src/prebidGlobal.js';
1818
import {config} from '../src/config.js';
1919
import {ajaxBuilder} from '../src/ajax.js';
20-
import events from '../src/events.js';
20+
import * as events from '../src/events.js';
2121
import CONSTANTS from '../src/constants.json';
2222
import {getHook} from '../src/hook.js';
2323
import {createBid} from '../src/bidfactory.js';

modules/pubCommonId.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
import { logMessage, parseUrl, buildUrl, triggerPixel, generateUUID, isArray } from '../src/utils.js';
77
import { config } from '../src/config.js';
8-
import events from '../src/events.js';
8+
import * as events from '../src/events.js';
99
import CONSTANTS from '../src/constants.json';
1010
import { getStorageManager } from '../src/storageManager.js';
1111

modules/rtdModule/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@
154154
import {config} from '../../src/config.js';
155155
import {module} from '../../src/hook.js';
156156
import {logError, logInfo, logWarn} from '../../src/utils.js';
157-
import events from '../../src/events.js';
157+
import * as events from '../../src/events.js';
158158
import CONSTANTS from '../../src/constants.json';
159159
import {gdprDataHandler, uspDataHandler} from '../../src/adapterManager.js';
160160
import {find} from '../../src/polyfill.js';

modules/talkadsBidAdapter.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ export const spec = {
1717
* @param poBid The bid params to validate.
1818
* @return boolean True if this is a valid bid, and false otherwise.
1919
*/
20-
isBidRequestValid: (poBid) => {
20+
isBidRequestValid: function (poBid) {
2121
utils.logInfo('isBidRequestValid : ', poBid);
2222
if (poBid.params === undefined) {
2323
utils.logError('VALIDATION FAILED : the parameters must be defined');
@@ -42,7 +42,7 @@ export const spec = {
4242
* @param poBidderRequest
4343
* @return ServerRequest Info describing the request to the server.
4444
*/
45-
buildRequests: (paValidBidRequests, poBidderRequest) => {
45+
buildRequests: function (paValidBidRequests, poBidderRequest) {
4646
utils.logInfo('buildRequests : ', paValidBidRequests, poBidderRequest);
4747
const laBids = paValidBidRequests.map((poBid, piId) => {
4848
const loOne = { id: piId, ad_unit: poBid.adUnitCode, bid_id: poBid.bidId, type: '', size: [] };
@@ -118,7 +118,7 @@ export const spec = {
118118
*
119119
* @param poBid The bid that won the auction
120120
*/
121-
onBidWon: (poBid) => {
121+
onBidWon: function (poBid) {
122122
utils.logInfo('onBidWon : ', poBid);
123123
if (poBid.pbid) {
124124
ajax(this.params.bidder_url + 'won/' + poBid.pbid);

modules/userId/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132

133133
import {find, includes} from '../../src/polyfill.js';
134134
import {config} from '../../src/config.js';
135-
import events from '../../src/events.js';
135+
import * as events from '../../src/events.js';
136136
import {getGlobal} from '../../src/prebidGlobal.js';
137137
import {gdprDataHandler} from '../../src/adapterManager.js';
138138
import CONSTANTS from '../../src/constants.json';

modules/userIdTargeting.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {config} from '../src/config.js';
22
import {getGlobal} from '../src/prebidGlobal.js';
33
import CONSTANTS from '../src/constants.json';
4-
import events from '../src/events.js';
4+
import * as events from '../src/events.js';
55
import { isStr, isPlainObject, isBoolean, isFn, hasOwn, logInfo } from '../src/utils.js';
66

77
const MODULE_NAME = 'userIdTargeting';

0 commit comments

Comments
 (0)