Um pequeno projeto que comecei faz uso de um módulo de nó (instalado via npm ) que declara const
variáveis. Executar e testar este projeto está bem, mas o browserify falha quando o UglifyJS é executado.
Token inesperado: palavra-chave (const)
Aqui está um arquivo Gulp genérico que tenho usado com sucesso em alguns outros projetos anteriores sem esse problema (ou seja, sem aquele 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 corrigir isso por substituir toda const
a var
em que o módulo instalado de NPM, e está tudo bem. Então, eu não entendo o fracasso.
O que há de errado 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 pelo Butternut e pareço funcionar.
const
disponível? (não tenho certeza de quando foi realmente introduzido)