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

时间:2015-12-11 22:32:12

标签: javascript node.js gulp laravel-elixir shim

让我们考虑一下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。据我所知,他们没有回报什么,他们改变了环境。这让我觉得它们必须在任何其他代码之前运行。

我可以将require('es5-shim'); require('es6-shim'); require('es7-shim');放入第一个文件的开头。但我不喜欢这个想法,因为我最终可能会改变订单,它会停止工作。而且我不确定,如果他们保证按照我指定的顺序进入。

那么,我如何预先添加文件?或者你们如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:0)

我想出了什么:

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');
});

但请注意,在gulpfile.js运行gulp watch时,任务在gulp中指定的顺序为not run。所以在此之前只运行gulp

另外,laravel-elixir(或者我应该说gulpdoesn't always detect个新文件。据推测,当源文件模式与任何文件都不匹配时,运行git pull