WordPress.org

Make WordPress Core

Changeset 31629


Ignore:
Timestamp:
03/05/2015 07:48:59 PM (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.