javascript - the - Babel polyfill y trago
the polyfill option has been removed the babel runtime module now skips polyfilling by default (1)
browserify(entryPoint, { debug: watch })
.add("babel/polyfill")
creará un paquete con dos puntos de entrada, con entryPoint
ejecutándose primero. Eso significa que el polyfill se cargará después de que se cargue la aplicación. O lo haces
require(''babel/polyfill'');
dentro de su archivo entryPoint
, o ponerlos en el orden correcto
browserify(["babel/polyfill", entryPoint], { debug: watch })
No puedo cargar correctamente babel/polyfill
con trago. En mi caso, el método Array.from
no está definido. Sin embargo, si intenta cargar browser-polyfill.js
con gulp .add(require.resolve("babel/polyfill"))
"only one instance of babel/polyfill is allowed"
error "only one instance of babel/polyfill is allowed"
. El código fuente es correcto porque lo he probado con babel browser-polyfill.js
.
Código fuente:
//Lib.js
export default class Lib
{
constructor()
{
var src = [1, 2, 3];
this.dst = Array.from(src);
}
foo()
{
return this.dst;
}
}
//main.js
import Lib from "./Lib";
var l = new Lib();
console.log(l.foo()); //Uncaught TypeError: Array.from is not a function
Gulpfile:
var gulp = require(''gulp'');
var sourcemaps = require(''gulp-sourcemaps'');
var source = require(''vinyl-source-stream'');
var buffer = require(''vinyl-buffer'');
var browserify = require(''browserify'');
var watchify = require(''watchify'');
var babelify = require(''babelify'');
var uglify = require(''gulp-uglify'');
var entryPoint = "./js/main.js";
function compile(watch)
{
var bundler;
function debug()
{
bundler.bundle()
.on(''error'', function(err) { console.error(err); this.emit(''end''); })
.pipe(source(''main.debug.js''))
.pipe(buffer())
.pipe(sourcemaps.init({ loadMaps: true }))
.pipe(sourcemaps.write(''./''))
.pipe(gulp.dest(''./bin''));
}
function release()
{
bundler.bundle()
.on(''error'', function(err) { console.error(err); this.emit(''end''); })
.pipe(source(''main.release.js''))
.pipe(buffer())
.pipe(uglify())
.pipe(gulp.dest(''./bin''));
}
if(watch)
{
bundler = watchify(browserify(entryPoint, { debug: watch })
.add(require.resolve("babel/polyfill"))
.transform(babelify));
bundler.on(''update'', function()
{
console.log(''Sources has changed. Rebuilding...'');
debug();
});
debug();
}
else
{
bundler = browserify(entryPoint, { debug: watch })
.add(require.resolve("babel/polyfill"))
.transform(babelify);
release();
}
}
gulp.task(''release'', function() { return compile(false); });
gulp.task(''debug'', function() { return compile(true); });
gulp.task(''default'', [''debug'']);