printBuildError.js 1.21 KB
Newer Older
1
2
3
/**
 * Copyright (c) 2015-present, Facebook, Inc.
 *
Sophie Alpert's avatar
Sophie Alpert committed
4
5
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
6
7
8
9
10
11
12
 */

'use strict';

const chalk = require('chalk');

module.exports = function printBuildError(err) {
13
14
  const message = err != null && err.message;
  const stack = err != null && err.stack;
15
16
17
18
19
20
21
22

  // Add more helpful message for UglifyJs error
  if (
    stack &&
    typeof message === 'string' &&
    message.indexOf('from UglifyJs') !== -1
  ) {
    try {
23
      const matched = /(.+)\[(.+):(.+),(.+)\]\[.+\]/.exec(stack);
24
      if (!matched) {
25
        throw new Error('Using errors for control flow is bad.');
26
27
28
29
30
31
      }
      const problemPath = matched[2];
      const line = matched[3];
      const column = matched[4];
      console.log(
        'Failed to minify the code from this file: \n\n',
32
33
34
        chalk.yellow(
          `\t${problemPath}:${line}${column !== '0' ? ':' + column : ''}`
        ),
35
36
37
        '\n'
      );
    } catch (ignored) {
38
      console.log('Failed to minify the bundle.', err);
39
    }
Bond's avatar
Bond committed
40
    console.log('Read more here: http://bit.ly/CRA-build-minify');
41
42
43
44
45
  } else {
    console.log((message || err) + '\n');
  }
  console.log();
};