Ответ 1
У меня была одна и та же проблема перед собой... Как упоминал Qantas в комментариях, Babel (ранее 6to5) преобразует синтаксис, но он не будет загружать модуль или полиполнения.
Я нашел, что самый простой рабочий процесс использует browserify с gulp. Это позаботится о транспиляции, добавлении полилиний, комплектации, минимизации и генерации исходных карт за один удар. Этот вопрос имеет довольно приятный пример: Gulp + браунировать + 6to5 + исходные карты.
В этой версии добавляются минификсации и полисы. Пример для вашего случая будет выглядеть следующим образом:
let gulp = require('gulp');
let browserify = require('browserify');
let babelify = require('babelify');
let util = require('gulp-util');
let buffer = require('vinyl-buffer');
let source = require('vinyl-source-stream');
let uglify = require('gulp-uglify');
let sourcemaps = require('gulp-sourcemaps');
gulp.task('build:demo', () => {
browserify('./demo/app.js', { debug: true })
.add(require.resolve('babel-polyfill/dist/polyfill.min.js'))
.transform(babelify.configure({ presets: ['es2015', 'es2016', 'stage-0', 'stage-3'] }))
.bundle()
.on('error', util.log.bind(util, 'Browserify Error'))
.pipe(source('demo.js'))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(uglify({ mangle: false }))
.pipe(sourcemaps.write('./'))
.pipe(gulp.dest('./demo'));
});
gulp.task('default', ['build:demo']);
Важно, чтобы uglify установил mangle в false; он действительно не выглядит хорошо с преобразованным кодом.
Если у вас нет всех зависимостей, вы можете создать файл package.json
и убедиться, что следующие пакеты определены в dependencies объект:
"devDependencies": {
"babel-polyfill": "^6.13.0",
"babel-preset-es2015": "^6.13.0",
"babel-preset-es2016": "^6.11.0",
"babel-preset-stage-0": "^6.5.0",
"babel-preset-stage-3": "^6.11.0",
"babelify": "^7.3.0",
"browserify": "^13.1.0",
"gulp": "^3.9.0",
"gulp-sourcemaps": "^1.6.0",
"gulp-uglify": "^2.0.0",
"gulp-util": "^3.0.0",
"vinyl-buffer": "^1.0.0",
"vinyl-source-stream": "^1.1.0"
}
Большинство из них не будут работать, если установлены с помощью -g
, поэтому подумайте о себе: P
Затем просто запустите npm install
, чтобы установить все зависимости, и gulp
, чтобы запустить задание по умолчанию и передать весь ваш код.
Ваши другие файлы выглядят хорошо, у вас есть правильная идея с импортом в начале каждого файла и экспорта ваших значений по умолчанию:) Если вы хотите, чтобы некоторые примеры babelified ES6 были в дикой природе, у меня есть несколько проектов на GitHub, которые могут помочь.