Một dự án nhỏ mà tôi đã bắt đầu sử dụng một mô-đun nút (được cài đặt thông qua npm ) khai báo const
các biến. Chạy và kiểm tra dự án này tốt, nhưng Browserify không thành công khi UglifyJS được thực thi.
Mã thông báo không mong muốn: từ khóa (const)
Đây là tệp Gulp chung mà tôi đã sử dụng thành công cho một vài dự án trước đây khác mà không gặp sự cố này (tức là không có mô-đun nút cụ thể đó).
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))
;
});
Tôi đã cố gắng sửa lỗi này bằng cách thay thế tất cả const
thành var
mô-đun được cài đặt npm đó và mọi thứ đều ổn. Vì vậy tôi không hiểu sự thất bại.
Có chuyện gì vậy const
? Trừ khi ai đó sử dụng IE10, tất cả các trình duyệt chính đều hỗ trợ cú pháp này.
Có cách nào để khắc phục điều này mà không yêu cầu thay đổi mô-đun nút đó không?
Cập nhật
Tôi đã tạm thời (hoặc vĩnh viễn) thay thế UglifyJS bằng Butternut và dường như hoạt động.
const
sẵn? (không chắc khi nào nó thực sự được giới thiệu)