-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathwebpack.config.js
80 lines (66 loc) · 2.52 KB
/
webpack.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
76
77
78
79
80
const defaultBuildConfig = require('./build-config');
const apiOption = require('./utils/apiOption');
const browserOptions = require('./utils/browserOptions');
const buildOptions = require('./utils/buildOptions');
const configOptions = require('./utils/configOptions');
const makeAssetCopier = require('./utils/makeAssetCopier');
const makeKey = require('./utils/makeKey');
const templates = require('./utils/templates');
const backgroundAndManifest = require('./utils/build/backgroundAndManifest');
const facebookPreloader = require('./utils/build/facebookPreloader');
const youtubePreloader = require('./utils/build/youtubePreloader');
const content = require('./utils/build/content');
const toolbar = require('./utils/build/toolbar');
const locales = require('./utils/build/locales');
const webpage = require('./utils/build/webpage');
// Input and output folders
const sourceFolder = 'src';
const buildFolder = 'build';
// --- Build templates ---------------------------------------------------------
const { debugTemplate, releaseTemplate } = templates(sourceFolder);
const doIt = async (env = {}) => {
console.log('******* STARTING: ', env || 'All (default)');
const givenEnv = Object.keys(env).length !== 0;
const browserOpt = browserOptions(env);
const configOpt = configOptions(env);
const buildOpt = buildOptions(env);
const buildDefs = [];
browserOpt.forEach(({ isFirefox, isChrome, code: browserCode }) => {
configOpt.forEach(({ isQA, code: configCode }) => {
buildOpt.forEach(({ isDebug, code: buildCode }) => {
const key = makeKey(browserCode, configCode, buildCode);
const makeConfig = givenEnv && env.file ? require(env.file) : defaultBuildConfig;
const config = makeConfig(isDebug);
const copyAssetFolder = makeAssetCopier(buildFolder, key, config.assetsPath);
const buildTemplate = isDebug ? debugTemplate : releaseTemplate;
const apiUrl = env.api ? apiOption(env).url : config.apiUrl;
const data = {
buildTemplate,
buildFolder,
key,
isFirefox,
isChrome,
isQA,
isDebug,
apiUrl,
config
};
[
backgroundAndManifest,
facebookPreloader,
youtubePreloader,
content,
toolbar,
locales.en,
locales.de,
locales.es,
webpage
].forEach(fn => {
buildDefs.push(fn(data, copyAssetFolder));
});
});
});
});
return buildDefs;
};
module.exports = doIt;