WordPress.org

Make WordPress Core

Ticket #40894: 40894.4.diff

File 40894.4.diff, 5.9 KB (added by netweb, 3 years ago)
  • .jshintrc

     
    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

     
    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: {
     
    175170                                }
    176171                        }
    177172                },
    178                 browserify: mediaConfig,
    179173                sass: {
    180174                        colors: {
    181175                                expand: true,
     
    336330                                ]
    337331                        },
    338332                        media: {
    339                                 options: {
    340                                         browserify: true
    341                                 },
    342333                                src: [
    343334                                        SOURCE_DIR + 'wp-includes/js/media/**/*.js'
    344335                                ]
     
    558549                                dest: SOURCE_DIR + 'wp-includes/js/jquery/jquery.masonry.min.js'
    559550                        }
    560551                },
    561 
     552                webpack: {
     553                        options: {
     554                                stats: ! process.env.NODE_ENV || 'development' === process.env.NODE_ENV
     555                        },
     556                        prod: webpackConfig,
     557                        dev: Object.assign( { watch: true }, webpackDevConfig )
     558                },
    562559                concat: {
    563560                        tinymce: {
    564561                                options: {
     
    741738                                }
    742739                        },
    743740                        config: {
    744                                 files: 'Gruntfile.js'
     741                                files: [
     742                                        'Gruntfile.js',
     743                                        'webpack-dev.config.js',
     744                                        'webpack.config.js'
     745                                ]
    745746                        },
    746747                        colors: {
    747748                                files: [SOURCE_DIR + 'wp-admin/css/colors/**'],
     
    779780
    780781        // Register tasks.
    781782
     783        // Webpack task.
     784        grunt.loadNpmTasks( 'grunt-webpack' );
     785
    782786        // RTL task.
    783787        grunt.registerTask('rtl', ['rtlcss:core', 'rtlcss:colors']);
    784788
     
    802806        grunt.renameTask( 'watch', '_watch' );
    803807
    804808        grunt.registerTask( 'watch', function() {
    805                 if ( ! this.args.length || this.args.indexOf( 'browserify' ) > -1 ) {
    806                         grunt.config( 'browserify.options', {
    807                                 browserifyOptions: {
    808                                         debug: true
    809                                 },
    810                                 watch: true
    811                         } );
     809                if ( ! this.args.length || this.args.indexOf( 'webpack' ) > -1 ) {
    812810
    813                         grunt.task.run( 'browserify' );
     811                        grunt.task.run( 'webpack:dev' );
    814812                }
    815813
    816814                grunt.task.run( '_' + this.nameArgs );
     
    821819        ] );
    822820
    823821        grunt.registerTask( 'precommit:js', [
    824                 'browserify',
     822                'webpack:prod',
    825823                'jshint:corejs',
    826824                'uglify:bookmarklet',
    827825                'uglify:masonry',
     
    890888                                        return regex.test( result.stdout );
    891889                                }
    892890
    893                                 if ( [ 'package.json', 'Gruntfile.js' ].some( testPath ) ) {
     891                                if ( [ 'package.json', 'Gruntfile.js', 'webpack.config.js' ].some( testPath ) ) {
    894892                                        grunt.log.writeln( 'Configuration files modified. Running `prerelease`.' );
    895893                                        taskList.push( 'prerelease' );
    896894                                } else {
     
    988986        grunt.event.on('watch', function( action, filepath, target ) {
    989987                var src;
    990988
    991                 if ( [ 'all', 'rtl', 'browserify' ].indexOf( target ) === -1 ) {
     989                if ( [ 'all', 'rtl', 'webpack' ].indexOf( target ) === -1 ) {
    992990                        return;
    993991                }
    994992
  • package.json

     
    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",
     
    3534    "grunt-replace": "~1.0.1",
    3635    "grunt-rtlcss": "~2.0.1",
    3736    "grunt-sass": "~1.2.1",
     37    "grunt-webpack": "^3.0.2",
    3838    "ink-docstrap": "^1.3.0",
    39     "matchdep": "~1.0.0"
     39    "matchdep": "~1.0.0",
     40    "matchdep": "~1.0.0",
     41    "webpack": "^3.5.4",
     42    "webpack-dev-server": "^2.7.1"
    4043  }
    4144}
  • webpack-dev.config.js

     
     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}
  • webpack.config.js

     
     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}