Ich bin mit großen Schluck-babel meines es6 Code übersetzenBabel es2015 Presets nicht übersetzen Karte und auf ES5
gulp.task('build_all_debug', ['config', 'compile'], function() {
var stream = gulp.src(['public/js/config.js', 'public/js/*.js', 'public/compiled/*.js'])
.pipe(babel({
presets: ['es2015']
}))
.pipe(concat('app.js'))
.pipe(gulp.dest('public/dist'));
return stream;
});
bis ES5 Während es meistens gut funktioniert, ist es nicht wirklich Karte übersetzen und Einstellen. Mein Ergebnis js Code enthält sie noch, und wenn ich Unit-Test mit Karma/Mocca/PhantomJS laufen, bekam ich folgende Fehlermeldung:
PhantomJS 2.1.1 (Mac OS X 0.0.0) notes.controller "before each" hook: workFn for "loads notes from the service" FAILED
Can't find variable: Map
[email protected]/dist/app.js:2402:39
Gibt es eine Möglichkeit babel zu zwingen Karte und Set zu übersetzen Objekt und Array in es5?
Wenn Sie ES6 über Babel verwenden, sollten Sie Ihre Dateien nicht miteinander verketten. Sie werden in Schwierigkeiten geraten, wenn Sie das tun, anstatt einen Modulbündler zu verwenden. – loganfsmyth
@loganfsmyth, können Sie bitte vorschlagen, welche Modul Bundler ist die "übliche" Wahl für Babel? Ich fühle mich jetzt wie in einem Kaninchenloch, der einzige Grund, warum ich Babel benutze, ist, dass ich Typescript aufgrund desselben Map/Set-Problems nicht direkt zu es5 kompilieren kann. Aus Kompatibilitätsgründen muss ich babel verwenden ein Babel-Rohr hinzufügen, aber jetzt sieht es so aus, als müsste ich den ganzen Bauprozess ändern? – swang
Ein relativ normaler Workflow heutzutage wäre ein Modulbündler wie Webpack oder Browserify. – loganfsmyth