Я пытаюсь написать задачу gulp, позволяющую мне использовать модули в JS (CommonJS в порядке) с использованием браузера + 6to5. Я также хочу, чтобы исходное сопоставление работало.Gulp + Browsify + 6to5 + исходные карты
Итак: 1. Я пишу модули с использованием синтаксиса ES6. 2. 6to5 транслирует эти модули в синтаксис CommonJS (или другой). 3. Browserify объединяет модули. 4. Исходные карты ссылаются на исходные файлы ES6.
Как написать такую задачу?
Edit: Вот то, что я до сих пор:
глотком задачи
gulp.task('browserify', function() {
var source = require('vinyl-source-stream');
var browserify = require('browserify');
var to5ify = require('6to5ify');
browserify({
debug: true
})
.transform(to5ify)
.require('./app/webroot/js/modules/main.js', {
entry: true
})
.bundle()
.on('error', function(err) {
console.log('Error: ' + err.message);
})
.pipe(source('bundle.js'))
.pipe(gulp.dest(destJs));
});
модули/A.js
function foo() {
console.log('Hello World');
let x = 10;
console.log('x is', x);
}
export {
foo
};
модули/B.js
import {
foo
}
from './A';
function bar() {
foo();
}
export {
bar
};
модули/main.js
import {
bar
}
from './B';
bar();
код, кажется, работает, но это не уменьшенная и карта источник инлайн (который на самом деле не работает на производстве).
Это работает очень хорошо, спасибо. Я замечаю, что невозможно установить контрольные точки в файлах с исходными файлами в инструментах Chrome dev, но это невозможно на данном этапе? – lamplightdev
Забудьте об этом - я также использовал uglify, который запутывал имена переменных. – lamplightdev
@lamplightdev Да, я просто добавил его, чтобы остановить манипулирующие имена '.pipe (uglify ({mangle: false})), и он отлично поработал.Я также добавил в полифонии 6to5 непосредственно перед преобразованием с помощью '.add (require.resolve ('6to5/polyfill'))' для лучшей совместимости между браузерами :) hth! –