1 | var rimraf = require('rimraf');
|
2 |
|
3 | var printErrors = require('./printErrors');
|
4 | var setupCompiler = require('./setupCompiler');
|
5 | var dllVersion = require('./dllVersion');
|
6 | var WebpackDllConfig = require('../config/webpack.config.dll');
|
7 |
|
8 | function prebuild(config, index, callback) {
|
9 | if (!config.chunks[index]) {
|
10 | if (typeof callback === 'function') {
|
11 | callback();
|
12 | }
|
13 | } else if (!dllVersion.isExpired(config.output.dll, config.chunks[index])) {
|
14 | prebuild(config, index + 1, callback);
|
15 | } else {
|
16 | var webpackConfig = WebpackDllConfig(config, index);
|
17 | rimraf(webpackConfig.output.path, function () {
|
18 | var webpackCompiler = setupCompiler(webpackConfig);
|
19 | console.log();
|
20 | console.log('> ' + config.chunks[index].name + ' building...');
|
21 | console.log();
|
22 | webpackCompiler.run((err, stats) => {
|
23 | if (err) {
|
24 | printErrors('Failed to compile.', [err]);
|
25 | process.exit(1);
|
26 | }
|
27 |
|
28 | if (stats.compilation.errors.length) {
|
29 | printErrors('Failed to compile.', stats.compilation.errors);
|
30 | process.exit(1);
|
31 | }
|
32 |
|
33 | if (process.env.CI && stats.compilation.warnings.length) {
|
34 | printErrors('Failed to compile.', stats.compilation.warnings);
|
35 | process.exit(1);
|
36 | }
|
37 |
|
38 | dllVersion.record(config.output.dll, config.chunks[index]);
|
39 | prebuild(config, index + 1, callback);
|
40 | });
|
41 | });
|
42 | }
|
43 | }
|
44 |
|
45 | module.exports = function (config, callback) {
|
46 | prebuild(config, 0, callback);
|
47 | };
|