Skip to content

gatsby build fails to minify js if typescript is used, doesn't show the error #3356

@farcaller

Description

@farcaller

Description

Note: this issue was reported elsewhere at least once (#1887). It's still broken in the current gatsby version.

gatsby build leaves the component---src-pages-index-tsx-***.js file unminified, because of the SyntaxError: Unexpected token: operator (>) in a =>.

Environment

Gatsby version: 1.9.149
Node.js version: v8.1.3
Operating System: OSX

File contents (if changed):

gatsby-config.js:

process.setMaxListeners(0);

const plugin = (resolve, opts=null) => {
  const d = {resolve};
  if (opts) {
    d.options = opts;
  }
  return d;
}

module.exports = {
  plugins: [
    'gatsby-plugin-typescript',
    
    'gatsby-plugin-react-helmet',
    'gatsby-plugin-sharp',
    plugin('gatsby-plugin-typography', {
      pathToConfigModule: 'src/utils/typography.ts',
    }),
    plugin('gatsby-plugin-google-fonts', {
      fonts: ['source sans pro', 'overlock'],
    }),
    plugin('gatsby-plugin-nprogress', {
      color: '#FF4F00',
      showSpinner: true,
    }),
    'gatsby-plugin-manifest',
    'gatsby-plugin-offline',

    'gatsby-transformer-sharp',
    
    plugin('gatsby-source-filesystem', {
      name: 'images',
      path: `${__dirname}/src/img/`,
    }),
  ],
}

Actual result

gatsby build silently fails to minify a js file.

Expected behavior

gatsby build properly minifies the file. If it fails to do so it at the very least must show lots of red bold alerts.

Steps to reproduce

Given the following index.tsx:

export default (props: any) => {
  return <h1>hello world</h1>;
}

Run gatsby build.

Result: component---src-pages-index-tsx-***.js file isn't minified.

If I instrument node_modules/webpack/lib/optimize/UglifyJsPlugin.js (around line 122), I can see the following error:

⠐ Building production JavaScript bundlesopt chunk file  component---src-pages-index-tsx-95dadac712787e4124a7.js JS_Parse_Error {
  message: 'SyntaxError: Unexpected token: operator (>)',
  filename: 'component---src-pages-index-tsx-95dadac712787e4124a7.js',
  line: 1931,
  col: 26,
  pos: 71372,
  stack: 
    Error
        at new JS_Parse_Error (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:1547:18)
        at js_error (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:1555:11)
        at croak (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2094:9)
        at token_error (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2102:9)
        at unexpected (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2108:9)
        at expr_atom (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2635:9)
        at maybe_unary (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2797:19)
        at expr_ops (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2832:24)
        at maybe_conditional (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2837:20)
        at maybe_assign (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2861:20)
        at maybe_assign (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2869:32)
        at maybe_assign (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2869:32)
        at expression (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2880:20)
        at simple_statement (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2319:55)
        at eval (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2188:19)
        at eval (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2141:24)
        at block_ (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2434:20)
        at eval (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2406:25)
        at function_ (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2412:15)
        at expr_atom (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2627:24)
        at maybe_unary (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2797:19)
        at expr_ops (eval at <anonymous> (./node_modules/webpack/node_modules/uglify-js/tools/node.js:28:1), <anonymous>:2832:24)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions