Build/Test Tools: Remove all previously built files when running clean:files.

Cleans old JS, CSS and Webpack files from /src so they are not automatically copied to /build when running `grunt build`. Fixes errors that may be caused by copying outdated files and/or directories to /build.

Props: desrosj, isabel_brison, SergeyBiryukov, ironprogrammer, mukesh27, robinwpdeveloper, razthee007, costdev, peterwilsoncc, azaozz.

Fixes: #47749.

git-svn-id: https://develop.svn.wordpress.org/trunk@55484 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Andrew Ozz 2023-03-08 01:01:45 +00:00
parent dfef412d61
commit 87f053492f

View File

@ -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: {