diff --git a/Gruntfile.js b/Gruntfile.js index 86e8880144..e031fd6d45 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -32,6 +32,40 @@ module.exports = function(grunt) { 'wp-content/plugins/akismet/**', '!wp-content/themes/twenty*/node_modules/**', ], + + // All built CSS files, in /src or /build. + cssFiles = [ + 'wp-admin/css/*.min.css', + 'wp-admin/css/*-rtl*.css', + 'wp-includes/css/*.min.css', + 'wp-includes/css/*-rtl*.css', + 'wp-admin/css/colors/**/*.css', + 'wp-includes/blocks/**/*.css', + ], + + // All built js files, in /src or /build. + jsFiles = [ + 'wp-admin/js/', + 'wp-includes/js/', + 'wp-includes/blocks/**/*.js', + 'wp-includes/blocks/**/*.js.map', + ], + + // All files built by Webpack, in /src or /build. + webpackFiles = [ + 'wp-includes/assets/*', + 'wp-includes/css/dist', + '!wp-includes/assets/script-loader-packages.min.php', + ], + + // Prepend `dir` to `file`, and keep `!` in place. + setFilePath = function( dir, file ) { + if ( '!' === file.charAt( 0 ) ) { + return '!' + dir + file.substring( 1 ); + } + + return dir + file; + }, changedFiles = { php: [] }; @@ -107,30 +141,36 @@ module.exports = function(grunt) { clean: { plugins: [BUILD_DIR + 'wp-content/plugins'], themes: [BUILD_DIR + 'wp-content/themes'], + + // Clean the files from /build and the JS, CSS, and Webpack files from /src. files: buildFiles.concat( [ '!wp-config.php', ] ).map( function( file ) { - if ( '!' === file.charAt( 0 ) ) { - return '!' + BUILD_DIR + file.substring( 1 ); - } - return BUILD_DIR + file; + return setFilePath( BUILD_DIR, file ); + } ).concat( + cssFiles.map( function( file ) { + return setFilePath( SOURCE_DIR, file ); + } ) + ).concat( + jsFiles.map( function( file ) { + return setFilePath( SOURCE_DIR, file ); + } ) + ).concat( + webpackFiles.map( function( file ) { + return setFilePath( SOURCE_DIR, file ); + } ) + ), + + // Clean built JS, CSS, and Webpack files from either /src or /build. + css: cssFiles.map( function( file ) { + return setFilePath( WORKING_DIR, file ); + } ), + js: jsFiles.map( function( file ) { + return setFilePath( WORKING_DIR, file ); + } ), + 'webpack-assets': webpackFiles.map( function( file ) { + return setFilePath( WORKING_DIR, file ); } ), - css: [ - WORKING_DIR + 'wp-admin/css/*.min.css', - WORKING_DIR + 'wp-admin/css/*-rtl*.css', - WORKING_DIR + 'wp-includes/css/*.min.css', - WORKING_DIR + 'wp-includes/css/*-rtl*.css', - WORKING_DIR + 'wp-admin/css/colors/**/*.css' - ], - js: [ - WORKING_DIR + 'wp-admin/js/', - WORKING_DIR + 'wp-includes/js/' - ], - 'webpack-assets': [ - WORKING_DIR + 'wp-includes/assets/*', - WORKING_DIR + 'wp-includes/css/dist/', - '!' + WORKING_DIR + 'wp-includes/assets/script-loader-packages.min.php' - ], dynamic: { dot: true, expand: true, @@ -237,15 +277,16 @@ module.exports = function(grunt) { 'suggest*' ], dest: WORKING_DIR + 'wp-includes/js/jquery/' - }, - { + } + ].concat( + // Copy tinymce.js only when building to /src. + WORKING_DIR === SOURCE_DIR ? { expand: true, cwd: SOURCE_DIR + 'js/_enqueues/vendor/tinymce/', src: 'tinymce.js', dest: SOURCE_DIR + 'wp-includes/js/tinymce/' - }, - - ] + } : [] + ) }, 'admin-js': { files: {