WordPress.org

Make WordPress Core

Changeset 31629


Ignore:
Timestamp:
03/05/15 19:48:59 (3 years ago)
Author:
wonderboymusic
Message:

Use browserify's watch mechanism in tandem with grunt watch. Makes building media bundles about 10 (million) times faster.

Make the browserify config more dynamic to make future additions easier and to ensure proper use of SOURCE_DIR.

Props iseulde, wonderboymusic.
See #28510.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Gruntfile.js

    r31579 r31629  
    33    var path = require('path'), 
    44        SOURCE_DIR = 'src/', 
    5         BUILD_DIR = 'build/'; 
     5        BUILD_DIR = 'build/', 
     6        mediaConfig = {}, 
     7        mediaBuilds = ['audio-video', 'grid', 'models', 'views']; 
    68 
    79    // Load tasks. 
     
    911    // Load legacy utils 
    1012    grunt.util = require('grunt-legacy-util'); 
     13 
     14    mediaBuilds.forEach( function ( build ) { 
     15        var path = SOURCE_DIR + 'wp-includes/js/media/'; 
     16        mediaConfig[ build ] = { files : {} }; 
     17        mediaConfig[ build ].files[ path + build + '.js' ] = [ path + build + '.manifest.js' ]; 
     18    } ); 
    1119 
    1220    // Project configuration. 
     
    117125            } 
    118126        }, 
    119         browserify: { 
    120             media: { 
    121                 files: { 
    122                     'src/wp-includes/js/media/models.js' : [ SOURCE_DIR + 'wp-includes/js/media/models.manifest.js' ], 
    123                     'src/wp-includes/js/media/views.js' : [ SOURCE_DIR + 'wp-includes/js/media/views.manifest.js' ], 
    124                     'src/wp-includes/js/media/audio-video.js' : [ SOURCE_DIR + 'wp-includes/js/media/audio-video.manifest.js' ], 
    125                     'src/wp-includes/js/media/grid.js' : [ SOURCE_DIR + 'wp-includes/js/media/grid.manifest.js' ] 
    126                 } 
    127             } 
    128         }, 
     127        browserify: mediaConfig, 
    129128        sass: { 
    130129            colors: { 
     
    503502            } 
    504503        }, 
    505         watch: { 
     504        _watch: { 
    506505            all: { 
    507506                files: [ 
     
    519518            browserify: { 
    520519                files: [ 
    521                     SOURCE_DIR + 'wp-includes/js/media/**/*.js', 
    522                     '!' + SOURCE_DIR + 'wp-includes/js/media/audio-video.js', 
    523                     '!' + SOURCE_DIR + 'wp-includes/js/media/grid.js', 
    524                     '!' + SOURCE_DIR + 'wp-includes/js/media/models.js', 
    525                     '!' + SOURCE_DIR + 'wp-includes/js/media/views.js' 
    526                 ], 
    527                 tasks: ['browserify', 'uglify:media'] 
     520                    SOURCE_DIR + 'wp-includes/js/media/*.js', 
     521                    '!' + SOURCE_DIR + 'wp-includes/js/media/*.manifest.js' 
     522                ], 
     523                tasks: ['uglify:media'] 
    528524            }, 
    529525            config: { 
     
    572568    ] ); 
    573569 
    574     // Pre-commit task. 
    575     grunt.registerTask('precommit', 'Runs front-end dev/test tasks in preparation for a commit.', 
    576         ['autoprefixer:core', 'imagemin:core', 'jshint:corejs', 'qunit:compiled', 'uglify:bookmarklet']); 
    577  
    578     // Copy task. 
    579     grunt.registerTask('copy:all', ['copy:files', 'copy:wp-admin-rtl', 'copy:version']); 
    580  
    581     // Build task. 
    582     grunt.registerTask('build', ['clean:all', 'copy:all', 'cssmin:core', 'colors', 'rtl', 'cssmin:rtl', 'cssmin:colors', 
    583         'browserify:media', 'uglify:core', 'uglify:media', 'uglify:jqueryui', 'concat:tinymce', 'compress:tinymce', 
    584         'clean:tinymce', 'jsvalidate:build']); 
     570    grunt.renameTask( 'watch', '_watch' ); 
     571 
     572    grunt.registerTask( 'watch', function() { 
     573        if ( ! this.args.length || this.args.indexOf( 'browserify' ) > -1 ) { 
     574            grunt.config( 'browserify.options', { 
     575                browserifyOptions: { 
     576                    debug: true 
     577                }, 
     578                watch: true 
     579            } ); 
     580 
     581            grunt.task.run( 'browserify' ); 
     582        } 
     583 
     584        grunt.task.run( '_' + this.nameArgs ); 
     585    } ); 
     586 
     587    grunt.registerTask( 'precommit', 'Runs front-end dev/test tasks in preparation for a commit.', [ 
     588        'autoprefixer:core', 
     589        'imagemin:core', 
     590        'browserify', 
     591        'jshint:corejs', 
     592        'qunit:compiled', 
     593        'uglify:bookmarklet' 
     594    ] ); 
     595 
     596    grunt.registerTask( 'copy:all', [ 
     597        'copy:files', 
     598        'copy:wp-admin-rtl', 
     599        'copy:version' 
     600    ] ); 
     601 
     602    grunt.registerTask( 'build', [ 
     603        'clean:all', 
     604        'copy:all', 
     605        'cssmin:core', 
     606        'colors', 
     607        'rtl', 
     608        'cssmin:rtl', 
     609        'cssmin:colors', 
     610        'browserify', 
     611        'uglify:core', 
     612        'uglify:media', 
     613        'uglify:jqueryui', 
     614        'concat:tinymce', 
     615        'compress:tinymce', 
     616        'clean:tinymce', 
     617        'jsvalidate:build' 
     618    ] ); 
    585619 
    586620    // Testing tasks. 
Note: See TracChangeset for help on using the changeset viewer.