gulp browserify reactify task is quite slow

前端 未结 3 802
我寻月下人不归
我寻月下人不归 2021-02-04 14:48

I am using Gulp as my task runner and browserify to bundle my CommonJs modules.

I have noticed that running my browserify task is quite slow, it takes around 2 - 3 seco

3条回答
  •  無奈伤痛
    2021-02-04 14:54

    You have to use watchify and enable its cache. Take a look at : https://www.codementor.io/reactjs/tutorial/react-js-browserify-workflow-part-2 and for more optimisation when building source-map you could do that :

    cd node_modules/browserify && npm i substack/browser-pack#sm-fast this would safe you half of time

    part of my gulpfile.js

    var gulp = require('gulp');
    var uglify = require('gulp-uglify');
    var htmlreplace = require('gulp-html-replace');
    var source = require('vinyl-source-stream');
    var browserify = require('browserify');
    var watchify = require('watchify');
    var reactify = require('reactify');
    var streamify = require('gulp-streamify');
    
    var path = {
        OUT : 'build.js',
        DEST2 : '/home/apache/www-modules/admimail/se/se',
        DEST_BUILD : 'build',
        DEST_DEV : 'dev',
        ENTRY_POINT : './src/js/main.jsx'
    };
    
    gulp.task('watch', [], function() {
        var bundler = browserify({
            entries : [ path.ENTRY_POINT ],
            extensions : [ ".js", ".jsx" ],
            transform : [ 'reactify' ],
            debug : true,
            fullPaths : true,
            cache : {}, // <---- here is important things for optimization 
            packageCache : {} // <----  and here
        });
        bundler.plugin(watchify, {
    //      delay: 100,
    //      ignoreWatch: ['**/node_modules/**'],
    //      poll: false
        });
    
        var rebundle = function() {
            var startDate = new Date();
            console.log('Update start at ' + startDate.toLocaleString());
            return bundler.bundle(function(err, buf){
                    if (err){
                        console.log(err.toString());
                    } else {
                        console.log(' updated in '+(new Date().getTime() - startDate.getTime())+' ms');
                    }
                })
                .pipe(source(path.OUT))
                .pipe(gulp.dest(path.DEST2 + '/' + path.DEST_DEV))
                ;
        };
    
        bundler.on('update', rebundle);
        return rebundle();
    });
    
    gulp.task('default', [ 'watch' ]);
    

提交回复
热议问题