Un pequeño proyecto que comencé hace uso de un módulo de nodo (instalado a través de npm ) que declara const
variables. Ejecutar y probar este proyecto está bien, pero browserify falla cuando se ejecuta UglifyJS.
Token inesperado: palabra clave (const)
Aquí hay un archivo Gulp genérico que he estado usando con éxito para algunos otros proyectos anteriores sin este problema (es decir, sin ese módulo de nodo en particular).
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))
;
});
He intentado solucionar este substituyen todo el const
que var
en ese módulo NPM-instalado, y todo está bien. Entonces no entiendo el fracaso.
¿Qué pasa con const
? A menos que alguien use IE10, todos los navegadores principales admiten esta sintaxis.
¿Hay alguna manera de solucionar este problema sin requerir un cambio en ese módulo de nodo?
Actualizar
He reemplazado temporalmente (o permanentemente) UglifyJS con Butternut y parece que funciona.
const
disponible? (no estoy seguro de cuándo se presentó)const
desde v4. Y actualmente estoy usando 8.9.1 LTS.