Make WordPress Core

Changeset 44245


Ignore:
Timestamp:
12/16/2018 11:27:36 PM (6 years ago)
Author:
SergeyBiryukov
Message:

Build Tools: Add non-minified @wordpress scripts to the build output.

Props atimmer.
Merges [43886] to trunk.
See #45156.

Location:
trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/Gruntfile.js

    r44233 r44245  
    1313        nodesass = require( 'node-sass' ),
    1414        phpUnitWatchGroup = grunt.option( 'group' ),
     15        themeFiles = [
     16            'wp-content/themes/index.php',
     17            'wp-content/themes/twenty*/**'
     18        ],
    1519        buildFiles = [
    1620            '*.php',
     
    2024            'wp-admin/**', // Include everything in wp-admin.
    2125            'wp-content/index.php',
    22             'wp-content/themes/index.php',
    23             'wp-content/themes/twenty*/**',
    2426            'wp-content/plugins/index.php',
    2527            'wp-content/plugins/hello.php',
    2628            'wp-content/plugins/akismet/**'
    27         ],
     29        ].concat( themeFiles ),
    2830        cleanFiles = [],
    2931        changedFiles = {
     
    128130            }
    129131        },
     132        symlink: {
     133            expanded: {
     134                files: [
     135                  {
     136                    expand: true,
     137                    overwrite: true,
     138                    cwd: SOURCE_DIR,
     139                    src: [
     140                            'wp-admin/*',
     141                            'wp-content/uploads/',
     142                            'wp-content/index.php',
     143                            'wp-content/plugins/*',
     144                            'wp-includes/*',
     145                            '*.php',
     146                            '*.txt',
     147                            '*.html',
     148                            '!wp-load.php',
     149                            '!wp-admin/css',
     150                            '!wp-content/themes',
     151                            '!wp-includes/css',
     152                            '!wp-includes/version.php', // Exclude version.php
     153                            '!wp-includes/formatting.php', // Exclude formatting.php
     154                            '!wp-includes/embed.php', // Exclude formatting.php
     155                            '!index.php', '!wp-admin/index.php',
     156                            '!_index.php', '!wp-admin/_index.php'
     157                        ],
     158                    dest: BUILD_DIR
     159                  },
     160                    {
     161                        'build/wp-config-sample.php': ['wp-config-sample.php'],
     162                        'build/index.php': ['src/_index.php'],
     163                        'build/wp-admin/index.php': ['src/wp-admin/_index.php']
     164                    }
     165                ]
     166            }
     167        },
    130168        copy: {
    131169            files: {
     
    139177                            '!.{svn,git}', // Exclude version control folders.
    140178                            '!wp-includes/version.php', // Exclude version.php
     179                            '!wp-admin/css/**/*', // Exclude the CSS
     180                            '!wp-includes/css/**/*', // Exclude the CSS
    141181                            '!index.php', '!wp-admin/index.php',
    142182                            '!_index.php', '!wp-admin/_index.php'
     
    153193                    }
    154194                ]
     195            },
     196            css: {
     197                dot: true,
     198                expand: true,
     199                cwd: SOURCE_DIR,
     200                src: [
     201                    'wp-admin/**/*.css',
     202                    'wp-includes/**/*.css'
     203                ],
     204                dest: BUILD_DIR
     205            },
     206            themes: {
     207                dot: true,
     208                expand: true,
     209                cwd: SOURCE_DIR,
     210                src: themeFiles,
     211                dest: BUILD_DIR
    155212            },
    156213            'npm-packages': {
     
    342399                dest: BUILD_DIR + 'wp-includes/version.php'
    343400            },
     401            'php-buildFiles': {
     402                files: {
     403                    'build/wp-includes/formatting.php': ['src/wp-includes/formatting.php'],
     404                    'build/wp-includes/embed.php': ['src/wp-includes/embed.php'],
     405                    'build/wp-load.php': ['src/wp-load.php'],
     406                }
     407            },
    344408            dynamic: {
    345409                dot: true,
     
    707771        webpack: {
    708772            prod: webpackConfig( { environment: 'production' } ),
     773            devProdTarget: webpackConfig( { environment: 'development', forceBuildTarget: 'build/wp-includes' } ),
    709774            dev: webpackConfig( { environment: 'development' } ),
    710775            watch: webpackConfig( { environment: 'development', watch: true } )
     
    11591224    grunt.registerTask( 'watch', function() {
    11601225        if ( ! this.args.length || this.args.indexOf( 'webpack' ) > -1 ) {
    1161             grunt.task.run( 'build' );
     1226            grunt.task.run( 'build:dev' );
    11621227        }
    11631228
     
    13081373    } );
    13091374
     1375    grunt.registerTask( 'uglify:all', [
     1376        'uglify:core',
     1377        'uglify:embed',
     1378        'uglify:jqueryui',
     1379        'uglify:imgareaselect'
     1380    ] );
     1381
    13101382    grunt.registerTask( 'copy:js', [
    13111383        'copy:npm-packages',
     
    13151387    ] );
    13161388
    1317     grunt.registerTask( 'uglify:all', [
    1318         'uglify:core',
    1319         'uglify:embed',
    1320         'uglify:jqueryui',
    1321         'uglify:imgareaselect'
     1389    grunt.registerTask( 'copyOrSymlink', function() {
     1390        var task = grunt.option( 'symlink' ) === true ? 'symlink:expanded' : 'copy:files';
     1391        grunt.task.run( task );
     1392    } );
     1393
     1394    grunt.registerTask( 'copy:all', [
     1395        'copyOrSymlink',
     1396        'copy:php-buildFiles',
     1397        'copy:css',
     1398        'copy:themes',
     1399        'copy:wp-admin-css-compat-rtl',
     1400        'copy:wp-admin-css-compat-min',
     1401        'copy:version',
     1402        'copy:js'
    13221403    ] );
    13231404
     
    13391420    ] );
    13401421
    1341     grunt.registerTask( 'copy:all', [
    1342         'copy:files',
    1343         'copy:wp-admin-css-compat-rtl',
    1344         'copy:wp-admin-css-compat-min',
    1345         'copy:version',
    1346         'copy:js'
    1347     ] );
    1348 
    1349     grunt.registerTask( 'build', [
    1350         'clean:all',
     1422    grunt.registerTask( 'clean-all', function() {
     1423        if ( grunt.option( 'symlink' ) === true ) {
     1424            // clean all symlinks
     1425            try {
     1426                var delSymlinks = require('del-symlinks');
     1427
     1428                var result = delSymlinks.sync(['./build/**']);
     1429                grunt.log.writeln( '>> ' + result.length + ' symlinks cleaned.' );
     1430            } catch ( e ) {
     1431                grunt.verbose.error( 'Error:', e.message );
     1432                grunt.fail.warn( "Failed to delete symlinks. If you're on Windows, " +
     1433                                                 "running as administrator could resolve this issue.");
     1434            }
     1435        }
     1436
     1437        grunt.task.run( 'clean:all' );
     1438    } );
     1439
     1440    grunt.registerTask( 'build:all', [
     1441        'clean-all',
    13511442        'copy:all',
    13521443        'file_append',
     
    13631454        'usebanner',
    13641455        'webpack:prod',
    1365         'webpack:dev',
     1456        'webpack:devProdTarget',
    13661457        'jsvalidate:build'
    13671458    ] );
     1459
     1460    grunt.registerTask( 'build', function() {
     1461        grunt.task.run( 'build:all' );
     1462    } );
     1463
     1464    grunt.registerTask( 'build:dev', function() {
     1465        try {
     1466            // Try creating a symlink.
     1467            fs.symlinkSync( './symlink', './symlinktest');
     1468            grunt.option( 'symlink', true );
     1469            // If succeeded, remove it again.
     1470            fs.unlinkSync( './symlinktest' );
     1471        } catch( e ) {
     1472            grunt.verbose.error( 'Error:', e.message );
     1473            grunt.log.error( "Failed to delete symlinks. Falling back to copying " +
     1474                                             "files instead. If you're on Windows, " +
     1475                                             "running as administrator could resolve this issue.");
     1476        } finally {
     1477            grunt.task.run( 'build:all' );
     1478        }
     1479    } );
    13681480
    13691481    grunt.registerTask( 'prerelease', [
  • trunk/tools/webpack/packages.js

    r44177 r44245  
    5050}
    5151
    52 module.exports = function( env = { environment: 'production', watch: false } ) {
     52module.exports = function( env = { environment: 'production', watch: false, forceBuildTarget: false } ) {
    5353    const mode = env.environment;
    5454    const suffix = mode === 'production' ? '.min' : '';
    55     const buildTarget = ( mode === 'production' ? 'build' : 'src' ) + '/wp-includes';
     55    const buildTarget = env.forceBuildTarget ? env.forceBuildTarget : ( mode === 'production' ? 'build' : 'src' ) + '/wp-includes';
    5656
    5757    const packages = [
  • trunk/webpack.config.js

    r44112 r44245  
    22const packagesConfig = require( './tools/webpack/packages' );
    33
    4 module.exports = function( env = { environment: "production", watch: false } ) {
     4module.exports = function( env = { environment: "production", watch: false, forceBuildTarget: false } ) {
    55    if ( ! env.watch ) {
    66        env.watch = false;
     7    }
     8
     9    if ( ! env.forceBuildTarget ) {
     10        env.forceBuildTarget = false;
    711    }
    812
Note: See TracChangeset for help on using the changeset viewer.