如何将 es*-shims 与 laravel 和 browserify 一起使用?

How to use use es*-shims with laravel and browserify?

让我们考虑这个gulpfile.js:

var elixir = require('laravel-elixir');
elixir(function(mix) {
    mix.coffee(['1.coffee', '2.coffee'], 'storage/app')
      .browserify('app.js', null, 'storage/app')
});

现在我想补充 some shims here。据我所知,他们没有 return 什么,他们改变了环境。这让我认为它们必须在任何其他代码之前 运行。

我可以将 require('es5-shim'); require('es6-shim'); require('es7-shim'); 放入第一个文件的开头。但我不喜欢这个主意,因为我最终可能会更改顺序,它会停止工作。而且我不确定,是否保证它们按照我指定的顺序出现。

那么,我该如何添加文件呢?或者你们是怎么处理的?

我想到了什么:

var elixir = require('laravel-elixir')
    gulp = require('gulp'),
    concat = require('gulp-concat')
    fs = require('fs');

elixir.extend('inlineTask', function(func, watcher) {
    var task = new elixir.Task(func.name, func);
    if (watcher) {
        task.watch(watcher);
    }
});

elixir(function(mix) {
    mix.coffee('**/*.coffee', 'storage/app/app.js')
        .browserify('app.js', 'storage/app/bundle.js', 'storage/app')
        .inlineTask(function bundleJs() {
            return gulp.src([
                    'node_modules/es5-shim/es5-shim.js',
                    'storage/app/bundle.js'])
                .pipe(elixir.Plugins.if(elixir.config.sourcemaps, elixir.Plugins.sourcemaps.init({loadMaps: true})))
                .pipe(concat('bundle.js'))
                .pipe(elixir.Plugins.if(elixir.config.sourcemaps, elixir.Plugins.sourcemaps.write('.')))
                .pipe(gulp.dest('public/js'));
        }, 'storage/app/bundle.js')
        .version('js/bundle.js');
});

但请注意,任务 not run 按照它们在 运行 宁 gulp watch 时在 gulpfile.js 中指定的顺序排列。所以在此之前 运行 只是 gulp.

才有意义

此外,gulp(或者我应该说 laravel-elixirdoesn't always detect 个新文件。据推测,当源文件模式与任何文件都不匹配时,gulp 为 运行.