use*_*495 7 javascript node.js coffeescript laravel-5 laravel-elixir
我的browserify工作流程(从coffee到js,with browserify-shim和coffeeify)是这样的:
我有2个主要文件,app.coffee并_app.coffee分别对前端和后端.两个文件都位于resources/coffee/front和resources/coffee/back(分别).我正在尝试browserify在laravel elixir中包含任务,因此结果文件将打开public/js/app.js,public/js/_app.js并且可以在以后修改该build文件夹.
到目前为止,我试图通过browserify.js在elixir的node_modules ingredients文件夹中创建一个文件来扩展elixir .内容是:
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);
});
browserify的配置是:
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'
        }]
    }
然后在我的gulp elixir任务中,我这样做:
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函数不包含在elixir中(原来它是gulp的).即使它是,elixir手表也不会听我的原始.coffee文件(我正试着看整个咖啡文件resources/coffee/**/*.coffee).
所以我认为解决方案是在文件发生变化时重新运行整个elixir过程,如:
gulp.task('default', function() {
    runSequence('coffeelint', 'browserify', 'elixir', 'images', 'watch');
});
我的watch任务:
gulp.task('watch', function() {
    gulp.watch(config.browserify.watch, ['coffeelint', 'default']);
    gulp.watch(config.images.src, ['images']);
});
但错误是,它说elixir中的sass()函数无法链接到browserify().知道怎么做吗?
您不能将它们组合起来,但可以同时运行两者。
//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');
});
| 归档时间: | 
 | 
| 查看次数: | 1800 次 | 
| 最近记录: |