Make WordPress Core

Changeset 44245 for trunk


Ignore:
Timestamp:
12/16/2018 11:27:36 PM (8 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.