UNPKG

1.5 kBJavaScriptView Raw
1var rimraf = require('rimraf');
2
3var printErrors = require('./printErrors');
4var setupCompiler = require('./setupCompiler');
5var dllVersion = require('./dllVersion');
6var WebpackDllConfig = require('../config/webpack.config.dll');
7
8function 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
45module.exports = function (config, callback) {
46 prebuild(config, 0, callback);
47};