โครงการขนาดเล็กที่ฉันเริ่มใช้โมดูลโหนด (ติดตั้งผ่านnpm ) ที่ประกาศconst
ตัวแปร การรันและทดสอบโปรเจ็กต์นี้ทำได้ดี แต่ browserify ล้มเหลวเมื่อดำเนินการ UglifyJS
โทเค็นที่ไม่คาดคิด: คำหลัก (const)
นี่คือไฟล์ Gulp ทั่วไปที่ฉันประสบความสำเร็จในการใช้สำหรับโครงการอื่น ๆ ที่ผ่านมาโดยไม่มีปัญหานี้ (เช่นไม่มีโมดูลโหนดนั้น)
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))
;
});
ฉันได้พยายามแก้ไขนี้โดยแทนที่ทั้งหมดconst
ไปvar
ในการที่โมดูล NPM ติดตั้งและทุกอย่างดี ดังนั้นฉันจึงไม่เข้าใจความล้มเหลว
เกิดอะไรขึ้นconst
? เบราว์เซอร์หลักทั้งหมดสนับสนุนไวยากรณ์นี้เว้นแต่จะมีใครใช้ IE10
มีวิธีแก้ไขโดยไม่ต้องเปลี่ยนโมดูลโหนดนั้นหรือไม่
อัปเดต
ฉันได้แทนที่ UglifyJS ชั่วคราว (หรือถาวร) ด้วยButternutและดูเหมือนจะได้ผล
const
หรือไม่? (ไม่แน่ใจว่าเปิดตัวจริงเมื่อไหร่)