forked from okta/okta-signin-widget
-
Notifications
You must be signed in to change notification settings - Fork 0
/
webpack.release.config.js
75 lines (68 loc) · 3.02 KB
/
webpack.release.config.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
// The release webpack config exports four configs:
// 1. entryConfig - generates okta-sign-in.entry.js, a non-minified built
// version of the widget that does not include any vendor dependencies. This
// is meant to be imported through a require() statement using webpack or
// browserify.
// 2. cdnConfig - generates okta.sign-in.min.js, a minified built version of the
// widget that includes everything necessary to run (including all vendor
// libraries)
// 3. noJqueryConfig - generates okta.sign-in.no-jquery.js, which is used by
// our own internal login flow. We can remove this once we update loginpage
// to use webpack.
// 4. devConfig - generates okta.sign-in.js, which is a non-minified version of
// the widget that contains helpful warning messages and includes everything
// necessary to run (including all vendor libraries).
/* global module */
var config = require('./webpack.common.config');
var plugins = require('./buildtools/webpack/plugins');
var useRuntime = require('./buildtools/webpack/runtime');
var usePolyfill = require('./buildtools/webpack/polyfill');
// 1. entryConfig (node module main entry. minified, no polyfill, external dependencies)
var entryConfig = config('okta-sign-in.entry.js');
entryConfig.output.filename = 'okta-sign-in.entry.js';
entryConfig.externals = {
// TODO: remove handlebars external OKTA-320626
'handlebars/runtime': {
'commonjs': 'handlebars/dist/handlebars.runtime',
'commonjs2': 'handlebars/dist/handlebars.runtime',
'amd': 'handlebars.runtime',
'root': 'handlebars'
},
'handlebars': {
'commonjs': 'handlebars/dist/handlebars.runtime',
'commonjs2': 'handlebars/dist/handlebars.runtime',
'amd': 'handlebars.runtime',
'root': 'handlebars'
},
'q': true,
'u2f-api-polyfill': true,
'underscore': true
};
entryConfig.plugins = plugins({ isProduction: true, analyzerFile: 'okta-sign-in.entry.analyzer' });
useRuntime(entryConfig);
// 2. noPolyfillConfig
var noPolyfillConfig = config('okta-sign-in.no-polyfill.min.js');
noPolyfillConfig.plugins = plugins({ isProduction: true, analyzerFile: 'okta-sign-in.no-polyfill.min.analyzer' });
useRuntime(noPolyfillConfig);
// 3. cdnConfig (with polyfill)
var cdnConfig = config('okta-sign-in.min.js');
cdnConfig.plugins = plugins({ isProduction: true, analyzerFile: 'okta-sign-in.min.analyzer' });
usePolyfill(cdnConfig);
// 4. noJqueryConfig
var noJqueryConfig = config('okta-sign-in-no-jquery.js');
noJqueryConfig.entry = cdnConfig.entry;
noJqueryConfig.plugins = plugins({ isProduction: true, analyzerFile: 'okta-sign-in-no-jquery.analyzer' });
noJqueryConfig.externals = {
'jquery': {
'commonjs': 'jquery',
'commonjs2': 'jquery',
'amd': 'jquery',
'root': 'jQuery'
}
};
useRuntime(noJqueryConfig);
// 5. devConfig (with polyfill, unminified)
var devConfig = config('okta-sign-in.js');
devConfig.plugins = plugins({ isProduction: false, analyzerFile: 'okta-sign-in.analyzer' });
usePolyfill(devConfig);
module.exports = [entryConfig, noPolyfillConfig, cdnConfig, noJqueryConfig, devConfig];