2015-03-09 21 views
7

Benim browserify iş akışı (kahveden js için, browserify-shim ve coffeeify ile) şu şekildedir:laravel 5 içerecek şekilde İksiri uzatmak browserify

Ben sırasıyla son kullanıcı ve arka uç için 2 ana dosyaları, app.coffee ve _app.coffee var. Her iki dosya da resources/coffee/front ve resources/coffee/back (sırasıyla). Sonuç dosyası public/js/app.js ve public/js/_app.js üzerinde olacak ve daha sonra build klasörüne revizyon olabilir, böylece laravel elixir browserify görev dahil etmeye çalışıyorum. Şimdiye kadar elixir'in node_modules ingredients klasöründe bir browserify.js dosyası oluşturarak iksiri genişletmeye çalıştım. içeriği: browserify için

var gulp    = require('gulp'); 
var browserify = require('browserify'); 
var watchify  = require('watchify'); 
var source   = require('vinyl-source-stream'); 
var logger   = require('../../../gulp/util/bundleLogger'); 
var errors   = require('../../../gulp/util/handleErrors'); 
var config   = require('../../../gulp/config').browserify; 

elixir.extend('browserify', function(callback) { 
    var bundleQueue = config.bundleConfigs.length; 
    var browserifyThis = function(bundleConfig) { 
     var bundler = browserify({ 
      cache: {}, 
      packageCache: {}, 
      fullPaths: true, 
      entries: bundleConfig.entries, 
      extensions: config.extensions, 
      debug: config.debug 
     }); 

     var bundle = function() { 
      logger.start(bundleConfig.outputName); 

      return bundler 
       .bundle() 
       .on('error', errors) 
       .pipe(source(bundleConfig.outputName)) 
       .pipe(gulp.dest(bundleConfig.dest)) 
       .on('end', finished); 
     } 

     if (global.isWatching) { 
      bundler = watchify(bundler); 
      bundler.on('update', bundle); 
     } 

     var finished = function() { 
      logger.end(bundleConfig.outputName); 
      if (bundleQueue) { 
       bundleQueue--; 
       if (bundleQueue === 0) { 
        callback(); 
       } 
      } 
     } 

     return bundle(); 
    }; 

    config.bundleConfigs.forEach(browserifyThis); 
}); 

Yapılandırma geçerli:

browserify: { 
     debug: true, 
     extensions: ['.coffee'], 
     watch: './resources/assets/coffee/{front,back}/**/*.coffee', 
     bundleConfigs: [ 
     { 
      entries: './resources/assets/coffee/front/app.coffee', 
      dest: './public/js', 
      outputName: 'app.js' 
     }, 
     { 
      entries: './resources/assets/coffee/back/app.coffee', 
      dest: './public/js', 
      outputName: '_app.js' 
     }] 
    } 

Sonra benim yudum iksir görevi, bunu:

var gulp  = require('gulp'); 
var elixir = require('laravel-elixir'); 

gulp.task('elixir', function() { 
    return elixir(function(mix) { 
     mix.sass('app.scss').browserify().version(['.public/css/app.css', './public/js/app.js', '.public/js/_app.js']); 
    }); 
}); 

callback fonksiyon olduğu için bu işe yaramazsa iksir içinde yer almaz (aslen gulp's). Öyle olsa bile, iksir saati orijinal .coffee dosyamı dinlemiyor (resources/coffee/**/*.coffee'da bulunan tüm kahve dosyasını izlemeye çalışıyorum).

gulp.task('default', function() { 
    runSequence('coffeelint', 'browserify', 'elixir', 'images', 'watch'); 
}); 

ve benim watch görev:

gulp.task('watch', function() { 
    gulp.watch(config.browserify.watch, ['coffeelint', 'default']); 
    gulp.watch(config.images.src, ['images']); 
}); 

Ama hata dosyası değişirse

Yani ne bir çözüm olarak düşündüm gibi tüm iksir prosedürünü yeniden çalıştırmaktır Bu, iksirdeki sass() işlevinin browserify() ile ilişkilendirilemeyeceğini söylüyor. Bunun nasıl yapılacağı hakkında bir fikrin var mı?

cevap

0

Onları birleştiremezsiniz, ancak ikisini birden çalıştırabilirsiniz.

//gulp.js in the root folder 
var elixir = require('laravel-elixir'); 

var browserify = require('browserify'); 

elixir(function(mix) { 

    mix.sass(['app.scss'], 'public/css'); 
}); 

elixir(function(mix) { 

    mix.browserify(['app.js'], 'public/js'); 
}); 
1

laravel iksir böylece gerek ne yapabileceğini browserify ait gerektiren bir yapmak browserify ile paket gelir

elixir(function(mix) { 
    mix.browserify(['main.js'], 
        'output directory', 
        'base-directory-if-different-from-public-folder'); 
}); 
olduğunu