1

Would be so grateful if someone could help me wrap my head around this. I have a project built in react. Using gulp to build my bundles. However, my bundles end up over 10Mb each. And the css 2Mb. Whenever I reload the page i download 22Mb data -- ridiculous, I know. I did not set up our environment and I have never worked with gulp/browserify/npm etc before. Our lead programmer quit about 6 weeks ago and now we are pushing the site live and I would really need to get the load time improved.

My own code is about 900 kb. My css is about 137 kb. I have 3 bundles.

vendor-bundle.js has the following included in the /assets/libs/index.js and adds up to 10Mb. After each include I have the sizes. How can semantic be 6Mb??? What am I doing wrong?

window.React = require('react'); (3 Mb)
require('jquery');               (1.7 Mb)
require('underscore');           (138 kb)
require('fastclick');            (72 kb)
require('semantic');             (6.7 Mb)
require('./markerclusterer');    (116 kb)
require('./stickyfill.min');     (30 kb)

app-bundle and account-bundle are the same size, about 11Mb each. account-bundle is loaded for the login/signup page and app-bundle for the main site. My own code is only 970 kb; how can the bundles add up to 11MB???

module.exports = {
    sass: {
        base_file: src + "/assets/css/main.scss",
        src: src + "/assets/css/**/*.{sass,scss}",
        dest: dest + "/css",
        dest2: dest2 + "/css",
        settings: {
            indentedSyntax: true,
            imagePath: 'images'
        }
    },
    images: {
        src: src + "/assets/images/**",
        dest: dest + "/images",
        dest2: dest2 + "/images"
    },
    fonts: {
        src: src + '/assets/fonts/**',
        dest: dest + '/fonts',
        dest2: dest2 + "/fonts"
    },
    js: {
        src: src + '/app/**/*.js',
        dest: dest + 'js'
    },
    browserify: { // A separate bundle will be generated for each bundle config in this list
        bundleConfigs: [{
            entries:    src  + '/assets/libs/index.js',
            dest:       dest + '/js',
            dest2:      dest2 + '/js',
            mapName:    'vendor.map.json',
            outputName: 'vendor-bundle.js',
            require:    [ 'jquery', 'underscore' , 'fastclick' , 'semantic' ]
        },{
            entries:    src + '/app/app.account.js', 
            dest:       dest + '/js',
            dest2:      dest2 + '/js',
            mapName:   'account.map,json',
            outputName: 'account-bundle.js',
            //list of externally available modules to exclude from the bundle
            external: [ 'jquery', 'underscore', 'lodash' , 'fastclick' , 'semantic' , '/app/app.main.js']
        },{
            entries: src + '/app/app.main.js', 
            dest: dest   + '/js',
            dest2:      dest2 + '/js',
            mapName:   'app.map,json',
            outputName:  'app-bundle.js',
            //list of externally available modules to exclude from the bundle
            external: [ 'jquery', 'underscore', 'lodash', 'fastclick' , 'semantic' ]
        }]
    },
    production: {
        cssSrc: dest + '/css/*.css',
        jsSrc:  dest + '/js/*.js',
        dest:   dest
    }
};

Also, once I learn how to strip my bundles, how do I most easily compress them and remove all comments?

I have spent quite some time researching online, but I'm running out of time. Thank You

Prune
  • 76,765
  • 14
  • 60
  • 81

0 Answers0