javascript - sourcemaps - unexpected token keyword const webpack



UglifyJS lança token inesperado: palavra-chave(const) com node_modules (4)

Acabei de ter esse problema com um projeto Gulp que refatorei e, por algum motivo, estava tendo problemas com o plug-in oficial do Terser Gulp. Este (gulp-terser) funcionou sem problemas.

https://src-bin.com

Um pequeno projeto que eu comecei a usar um módulo de nó (instalado via npm ) que declara variáveis const . A execução e o teste deste projeto estão bem, mas o browserify falha quando o UglifyJS é executado.

Token inesperado: palavra-chave (const)

Aqui está um arquivo Gulp genérico que eu tenho usado com sucesso em alguns outros projetos anteriores sem esse problema (ou seja, sem esse módulo de nó específico).

gulpfile.js

'use strict';

const browserify = require('browserify');
const gulp = require('gulp');
const source = require('vinyl-source-stream');
const derequire = require('gulp-derequire');
const buffer = require('vinyl-buffer');
const uglify = require('gulp-uglify');
const sourcemaps = require('gulp-sourcemaps');
const gutil = require('gulp-util');
const path = require('path');
const pkg = require('./package');
const upperCamelCase = require('uppercamelcase');

const SRC_PATH = path.dirname(pkg.main);
const DIST_PATH = path.dirname(pkg.browser);

const INPUT_FILE = path.basename(pkg.main);
const OUTPUT_FILE = path.basename(pkg.browser);

const MODULE_NAME = upperCamelCase(pkg.name);


gulp.task('default', () => {
  // set up the browserify instance on a task basis
  var b = browserify({
    entries: INPUT_FILE,
    basedir: SRC_PATH,
    transform: ['babelify'],
    standalone: MODULE_NAME,
    debug: true
  });

  return b.bundle()
    .pipe(source(OUTPUT_FILE))
    .pipe(buffer())
    .pipe(derequire())
    .pipe(sourcemaps.init({loadMaps: true}))
    .pipe(uglify())
    .on('error', gutil.log)
    .pipe(sourcemaps.write('.'))
    .pipe(gulp.dest(DIST_PATH))
  ;
});

Eu tentei consertar isso substituindo all const para var nesse módulo npm-instalado, e está tudo bem. Então, eu não entendo o fracasso.

O que há de errado com const ? A menos que alguém use o IE10, todos os principais navegadores suportam essa sintaxe.

Existe uma maneira de corrigir isso sem exigir uma alteração nesse módulo de nó?

Atualizar

Substituí temporariamente (ou permanentemente) o UglifyJS por Butternut e parece funcionar.


Answer #1

Eu realmente não acho que essa abordagem seja boa, mas no meu caso eu precisava fazer isso uma vez e esquecer isso, então fui ao site da babel , transpilei es6 para es5 online e substitui a saída!


Answer #2

Substituí o UglifyJS pelo YUI Compressor JS dentro da GUI do PHPStorm. Ele funciona agora.


Answer #3

Usar o uglify-es-webpack-plugin é melhor

    const UglifyEsPlugin = require('uglify-es-webpack-plugin')



    module.exports = {
    plugins: [
            new UglifyEsPlugin({
                compress:{
                    drop_console: true
                }
            }),
    ] 
    }




uglifyjs2