Make WordPress Core

Ticket #40894: 40894.3.diff

File 40894.3.diff, 6.0 KB (added by adamsilverstein, 7 years ago)
  • .jshintrc

    diff --git .jshintrc .jshintrc
    index 0a082dded5..278eac22c3 100644
     
    2121    "Backbone": false,
    2222    "jQuery": false,
    2323    "JSON": false,
    24     "wp": false
     24    "wp": false,
     25    "export": false,
     26    "module": false,
     27    "require": false
    2528  }
    2629}
  • Gruntfile.js

    diff --git Gruntfile.js Gruntfile.js
    index 0070a7cf77..e3d0fd2b2d 100644
     
    11/* jshint node:true */
     2var webpackConfig = require( './webpack.config' );
     3var webpackDevConfig = require( './webpack-dev.config' );
     4
    25module.exports = function(grunt) {
    36        var path = require('path'),
    47                fs = require( 'fs' ),
    58                SOURCE_DIR = 'src/',
    69                BUILD_DIR = 'build/',
    710                BANNER_TEXT = '/*! This file is auto-generated */',
    8                 autoprefixer = require('autoprefixer'),
    9                 mediaConfig = {},
    10                 mediaBuilds = ['audiovideo', 'grid', 'models', 'views'];
     11                autoprefixer = require( 'autoprefixer' );
    1112
    1213        // Load tasks.
    1314        require('matchdep').filterDev(['grunt-*', '!grunt-legacy-util']).forEach( grunt.loadNpmTasks );
    1415        // Load legacy utils
    1516        grunt.util = require('grunt-legacy-util');
    1617
    17         mediaBuilds.forEach( function ( build ) {
    18                 var path = SOURCE_DIR + 'wp-includes/js/media';
    19                 mediaConfig[ build ] = { files : {} };
    20                 mediaConfig[ build ].files[ path + '-' + build + '.js' ] = [ path + '/' + build + '.manifest.js' ];
    21         } );
    22 
    2318        // Project configuration.
    2419        grunt.initConfig({
    2520                postcss: {
    module.exports = function(grunt) { 
    175170                                }
    176171                        }
    177172                },
    178                 browserify: mediaConfig,
    179173                sass: {
    180174                        colors: {
    181175                                expand: true,
    module.exports = function(grunt) { 
    336330                                ]
    337331                        },
    338332                        media: {
    339                                 options: {
    340                                         browserify: true
    341                                 },
    342333                                src: [
    343334                                        SOURCE_DIR + 'wp-includes/js/media/**/*.js'
    344335                                ]
    module.exports = function(grunt) { 
    549540                                dest: SOURCE_DIR + 'wp-includes/js/jquery/jquery.masonry.min.js'
    550541                        }
    551542                },
    552 
     543                webpack: {
     544                        options: {
     545                                stats: ! process.env.NODE_ENV || 'development' === process.env.NODE_ENV
     546                        },
     547                        prod: webpackConfig,
     548                        dev: Object.assign( { watch: true }, webpackDevConfig )
     549                },
    553550                concat: {
    554551                        tinymce: {
    555552                                options: {
    module.exports = function(grunt) { 
    732729                                }
    733730                        },
    734731                        config: {
    735                                 files: 'Gruntfile.js'
     732                                files: [
     733                                        'Gruntfile.js',
     734                                        'webpack-dev.config.js',
     735                                        'webpack.config.js'
     736                                ]
    736737                        },
    737738                        colors: {
    738739                                files: [SOURCE_DIR + 'wp-admin/css/colors/**'],
    module.exports = function(grunt) { 
    770771
    771772        // Register tasks.
    772773
     774        // Webpack task.
     775        grunt.loadNpmTasks( 'grunt-webpack' );
     776
    773777        // RTL task.
    774778        grunt.registerTask('rtl', ['rtlcss:core', 'rtlcss:colors']);
    775779
    module.exports = function(grunt) { 
    793797        grunt.renameTask( 'watch', '_watch' );
    794798
    795799        grunt.registerTask( 'watch', function() {
    796                 if ( ! this.args.length || this.args.indexOf( 'browserify' ) > -1 ) {
    797                         grunt.config( 'browserify.options', {
    798                                 browserifyOptions: {
    799                                         debug: true
    800                                 },
    801                                 watch: true
    802                         } );
     800                if ( ! this.args.length || this.args.indexOf( 'webpack' ) > -1 ) {
    803801
    804                         grunt.task.run( 'browserify' );
     802                        grunt.task.run( 'webpack:dev' );
    805803                }
    806804
    807805                grunt.task.run( '_' + this.nameArgs );
    module.exports = function(grunt) { 
    812810        ] );
    813811
    814812        grunt.registerTask( 'precommit:js', [
    815                 'browserify',
     813                'webpack:prod',
    816814                'jshint:corejs',
    817815                'uglify:bookmarklet',
    818816                'uglify:masonry',
    module.exports = function(grunt) { 
    881879                                        return regex.test( result.stdout );
    882880                                }
    883881
    884                                 if ( [ 'package.json', 'Gruntfile.js' ].some( testPath ) ) {
     882                                if ( [ 'package.json', 'Gruntfile.js', 'webpack.config.js' ].some( testPath ) ) {
    885883                                        grunt.log.writeln( 'Configuration files modified. Running `prerelease`.' );
    886884                                        taskList.push( 'prerelease' );
    887885                                } else {
    module.exports = function(grunt) { 
    979977        grunt.event.on('watch', function( action, filepath, target ) {
    980978                var src;
    981979
    982                 if ( [ 'all', 'rtl', 'browserify' ].indexOf( target ) === -1 ) {
     980                if ( [ 'all', 'rtl', 'webpack' ].indexOf( target ) === -1 ) {
    983981                        return;
    984982                }
    985983
  • package.json

    diff --git package.json package.json
    index 8ffb450645..fb13e0fdf4 100644
     
    1515    "autoprefixer": "^6.5.1",
    1616    "grunt": "~0.4.5",
    1717    "grunt-banner": "^0.6.0",
    18     "grunt-browserify": "~5.0.0",
    1918    "grunt-contrib-clean": "~1.0.0",
    2019    "grunt-contrib-compress": "~1.3.0",
    2120    "grunt-contrib-concat": "~1.0.0",
     
    3433    "grunt-replace": "~1.0.1",
    3534    "grunt-rtlcss": "~2.0.1",
    3635    "grunt-sass": "~1.2.1",
    37     "matchdep": "~1.0.0"
     36    "grunt-webpack": "^3.0.2",
     37    "matchdep": "~1.0.0",
     38    "webpack": "^3.5.4",
     39    "webpack-dev-server": "^2.7.1"
    3840  }
    3941}
  • new file webpack-dev.config.js

    diff --git webpack-dev.config.js webpack-dev.config.js
    new file mode 100644
    index 0000000000..1c550f7348
    - +  
     1var path         = require('path'),
     2        SOURCE_DIR   = 'src/',
     3        mediaConfig  = {},
     4        mediaBuilds  = ['audiovideo', 'grid', 'models', 'views'],
     5        webpack      = require('webpack');
     6
     7
     8mediaBuilds.forEach( function ( build ) {
     9        var path = SOURCE_DIR + 'wp-includes/js/media';
     10        mediaConfig[ build ] = './' + path + '/' + build + '.manifest.js';
     11} );
     12
     13module.exports = {
     14        cache: true,
     15        entry: mediaConfig,
     16        output: {
     17                path:     path.join( __dirname, 'src/wp-includes/js' ),
     18                filename: 'media-[name].js'
     19        }
     20}
  • new file webpack.config.js

    diff --git webpack.config.js webpack.config.js
    new file mode 100644
    index 0000000000..eb7c964d5a
    - +  
     1var path         = require('path'),
     2        SOURCE_DIR   = 'src/',
     3        mediaConfig  = {},
     4        mediaBuilds  = ['audiovideo', 'grid', 'models', 'views'],
     5        webpack      = require('webpack');
     6
     7
     8mediaBuilds.forEach( function ( build ) {
     9        var path = SOURCE_DIR + 'wp-includes/js/media';
     10        mediaConfig[ build ] = './' + path + '/' + build + '.manifest.js';
     11} );
     12
     13module.exports = {
     14        cache: true,
     15        entry: mediaConfig,
     16        output: {
     17                path:     path.join( __dirname, 'src/wp-includes/js' ),
     18                filename: 'media-[name].js'
     19        },
     20        plugins: [
     21                new webpack.optimize.ModuleConcatenationPlugin()
     22        ]
     23}