Make WordPress Core

Ticket #49423: 49423-latest.diff

File 49423-latest.diff, 6.0 KB (added by gziolo, 4 years ago)
  • package.json

     
    6969                "sinon": "~9.0.0",
    7070                "sinon-test": "~3.0.0",
    7171                "source-map-loader": "^0.2.4",
    72                 "uglify-js": "^3.6.0",
    7372                "uglifyjs-webpack-plugin": "2.2.0",
    7473                "wait-on": "3.3.0",
    7574                "webpack": "4.43.0",
  • tools/webpack/packages.js

     
    55const CopyWebpackPlugin = require( 'copy-webpack-plugin' );
    66const LiveReloadPlugin = require( 'webpack-livereload-plugin' );
    77const postcss = require( 'postcss' );
    8 const UglifyJS = require( 'uglify-js' );
    98
    109const { join, basename } = require( 'path' );
    1110const { get } = require( 'lodash' );
     
    4140        );
    4241}
    4342
    44 /**
    45  * Maps vendors to copy commands for the CopyWebpackPlugin.
    46  *
    47  * @param {Object} vendors     Vendors to include in the vendor folder.
    48  * @param {string} buildTarget The folder in which to build the packages.
    49  *
    50  * @return {Object[]} Copy object suitable for the CopyWebpackPlugin.
    51  */
    52 function mapVendorCopies( vendors, buildTarget ) {
    53         return Object.keys( vendors ).map( ( filename ) => ( {
    54                 from: join( baseDir, `node_modules/${ vendors[ filename ] }` ),
    55                 to: join( baseDir, `${ buildTarget }/js/dist/vendor/${ filename }` ),
    56         } ) );
    57 }
    5843
    5944module.exports = function( env = { environment: 'production', watch: false, buildTarget: false } ) {
    6045        const mode = env.environment;
     
    7156                )
    7257                .map( ( packageName ) => packageName.replace( WORDPRESS_NAMESPACE, '' ) );
    7358
    74         const vendors = {
    75                 'lodash.js': 'lodash/lodash.js',
    76                 'wp-polyfill.js': '@babel/polyfill/dist/polyfill.js',
    77                 'wp-polyfill-fetch.js': 'whatwg-fetch/dist/fetch.umd.js',
    78                 'wp-polyfill-element-closest.js': 'element-closest/element-closest.js',
    79                 'wp-polyfill-node-contains.js': 'polyfill-library/polyfills/Node/prototype/contains/polyfill.js',
    80                 'wp-polyfill-url.js': 'core-js-url-browser/url.js',
    81                 'wp-polyfill-dom-rect.js': 'polyfill-library/polyfills/DOMRect/polyfill.js',
    82                 'wp-polyfill-formdata.js': 'formdata-polyfill/FormData.js',
    83                 'moment.js': 'moment/moment.js',
    84                 'react.js': 'react/umd/react.development.js',
    85                 'react-dom.js': 'react-dom/umd/react-dom.development.js',
    86         };
    87 
    88         const minifiedVendors = {
    89                 'lodash.min.js': 'lodash/lodash.min.js',
    90                 'wp-polyfill.min.js': '@babel/polyfill/dist/polyfill.min.js',
    91                 'wp-polyfill-formdata.min.js': 'formdata-polyfill/formdata.min.js',
    92                 'wp-polyfill-url.min.js': 'core-js-url-browser/url.min.js',
    93                 'moment.min.js': 'moment/min/moment.min.js',
    94                 'react.min.js': 'react/umd/react.production.min.js',
    95                 'react-dom.min.js': 'react-dom/umd/react-dom.production.min.js',
    96         };
    97 
    98         const minifyVendors = {
    99                 'wp-polyfill-fetch.min.js': 'whatwg-fetch/dist/fetch.umd.js',
    100                 'wp-polyfill-element-closest.min.js': 'element-closest/element-closest.js',
    101                 'wp-polyfill-node-contains.min.js': 'polyfill-library/polyfills/Node/prototype/contains/polyfill.js',
    102                 'wp-polyfill-dom-rect.min.js': 'polyfill-library/polyfills/DOMRect/polyfill.js',
    103         };
    104 
    10559        const dynamicBlockFolders = [
    10660                'archives',
    10761                'block',
     
    162116                } , {} ),
    163117        };
    164118
    165         const developmentCopies = mapVendorCopies( vendors, buildTarget );
    166         const minifiedCopies = mapVendorCopies( minifiedVendors, buildTarget );
    167         const minifyCopies = mapVendorCopies( minifyVendors, buildTarget ).map( ( copyCommand ) => {
    168                 return {
    169                         ...copyCommand,
    170                         transform: ( content ) => {
    171                                 return UglifyJS.minify( content.toString() ).code;
    172                         },
    173                 };
    174         } );
    175 
    176         let vendorCopies = mode === "development" ? developmentCopies : [ ...minifiedCopies, ...minifyCopies ];
    177 
    178119        let cssCopies = packages.map( ( packageName ) => ( {
    179120                from: join( baseDir, `node_modules/@wordpress/${ packageName }/build-style/*.css` ),
    180121                to: join( baseDir, `${ buildTarget }/css/dist/${ packageName }/` ),
     
    290231                        } ),
    291232                        new CopyWebpackPlugin(
    292233                                [
    293                                         ...vendorCopies,
    294234                                        ...cssCopies,
    295235                                        ...phpCopies,
    296236                                        ...blockMetadataCopies,
  • tools/webpack/vendor.js

     
     1/**
     2 * External dependencies
     3 */
     4const { join } = require( 'path' );
     5
     6module.exports = function( env = { environment: 'production', watch: false, buildTarget: false } ) {
     7        const mode = env.environment;
     8        const suffix = mode === 'production' ? '.min' : '';
     9        const buildTarget = env.buildTarget || ( mode === 'production' ? 'build' : 'src' );
     10
     11        return {
     12                mode,
     13
     14                entry: {
     15                        lodash: 'lodash',
     16                        'wp-polyfill': '@babel/polyfill',
     17                        'wp-polyfill-fetch': 'whatwg-fetch',
     18                        'wp-polyfill-element-closest': 'element-closest',
     19                        'wp-polyfill-node-contains': 'polyfill-library/polyfills/Node/prototype/contains/polyfill.js',
     20                        'wp-polyfill-url': 'core-js-url-browser',
     21                        'wp-polyfill-dom-rect': 'polyfill-library/polyfills/DOMRect/polyfill.js',
     22                        'wp-polyfill-formdata': 'formdata-polyfill',
     23                        'moment': 'moment',
     24                        'react': 'react',
     25                        'react-dom': 'react-dom',
     26                },
     27
     28                output: {
     29                        filename: `[name]${ suffix }.js`,
     30                        path: join( __dirname, `../../${ buildTarget }/wp-includes/js/dist/vendor` ),
     31                },
     32
     33                stats: {
     34                        children: false,
     35                },
     36
     37                watch: env.watch,
     38        };
     39};
  • webpack.config.js

     
    11const mediaConfig = require( './tools/webpack/media' );
    22const packagesConfig = require( './tools/webpack/packages' );
     3const vendorConfig = require( './tools/webpack/vendor' );
    34
    45module.exports = function( env = { environment: "production", watch: false, buildTarget: false } ) {
    56        if ( ! env.watch ) {
     
    1314        const config = [
    1415                mediaConfig( env ),
    1516                packagesConfig( env ),
     17                vendorConfig( env ),
    1618        ];
    1719
    1820        return config;