From ef5acd01c370feeae799bea59e408a3eecd33e13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tetsuaki=20Hamano=20/=20=E6=B5=9C=E9=87=8E=20=E5=93=B2?= =?UTF-8?q?=E6=98=8E?= Date: Wed, 6 Sep 2023 09:56:47 +0000 Subject: [PATCH 1/4] Correctly resolve entry points when src directory is simlinked --- packages/scripts/config/webpack.config.js | 5 ++++- packages/scripts/utils/config.js | 11 ++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/scripts/config/webpack.config.js b/packages/scripts/config/webpack.config.js index 29a25c9353ff3..05b37945795a7 100644 --- a/packages/scripts/config/webpack.config.js +++ b/packages/scripts/config/webpack.config.js @@ -10,6 +10,7 @@ const MiniCSSExtractPlugin = require( 'mini-css-extract-plugin' ); const { basename, dirname, resolve } = require( 'path' ); const ReactRefreshWebpackPlugin = require( '@pmmmwh/react-refresh-webpack-plugin' ); const TerserPlugin = require( 'terser-webpack-plugin' ); +const { realpathSync } = require( 'fs' ); /** * WordPress dependencies @@ -302,7 +303,9 @@ const config = { filter: ( filepath ) => { return ( process.env.WP_COPY_PHP_FILES_TO_DIST || - RenderPathsPlugin.renderPaths.includes( filepath ) + RenderPathsPlugin.renderPaths.includes( + realpathSync( filepath ).replace( /\\/g, '/' ) + ) ); }, }, diff --git a/packages/scripts/utils/config.js b/packages/scripts/utils/config.js index fc00a613d34ac..bb871b6f082dc 100644 --- a/packages/scripts/utils/config.js +++ b/packages/scripts/utils/config.js @@ -206,17 +206,15 @@ function getWebpackEntryPoints() { // 2. Checks whether any block metadata files can be detected in the defined source directory. // It scans all discovered files looking for JavaScript assets and converts them to entry points. + const srcDirectory = fromProjectRoot( getWordPressSrcDirectory() ) + sep; const blockMetadataFiles = glob( - `${ getWordPressSrcDirectory() }/**/block.json`, + join( srcDirectory, '**/block.json' ).replace( /\\/g, '/' ), { absolute: true, } ); if ( blockMetadataFiles.length > 0 ) { - const srcDirectory = fromProjectRoot( - getWordPressSrcDirectory() + sep - ); const entryPoints = blockMetadataFiles.reduce( ( accumulator, blockMetadataFile ) => { // wrapping in try/catch in case the file is malformed @@ -335,15 +333,14 @@ function getRenderPropPaths() { } // Checks whether any block metadata files can be detected in the defined source directory. + const srcDirectory = fromProjectRoot( getWordPressSrcDirectory() + sep ); const blockMetadataFiles = glob( - `${ getWordPressSrcDirectory() }/**/block.json`, + join( srcDirectory, '**/block.json' ).replace( /\\/g, '/' ), { absolute: true, } ); - const srcDirectory = fromProjectRoot( getWordPressSrcDirectory() + sep ); - const renderPaths = blockMetadataFiles.map( ( blockMetadataFile ) => { const { render } = JSON.parse( readFileSync( blockMetadataFile ) ); if ( render && render.startsWith( 'file:' ) ) { From 57b855e483ab19d52a37def05f25b28a6336caef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tetsuaki=20Hamano=20/=20=E6=B5=9C=E9=87=8E=20=E5=93=B2?= =?UTF-8?q?=E6=98=8E?= Date: Wed, 6 Sep 2023 12:26:11 +0000 Subject: [PATCH 2/4] Update changelog --- packages/scripts/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/scripts/CHANGELOG.md b/packages/scripts/CHANGELOG.md index 1e11550a8f07c..acf24a423c0af 100644 --- a/packages/scripts/CHANGELOG.md +++ b/packages/scripts/CHANGELOG.md @@ -6,6 +6,10 @@ - Added support for `test-playwright` script ([#53108](https://github.com/WordPress/gutenberg/pull/53108)). +### Bug Fix + +- Correctly resolve entry points when the directory is symlinked ([#54212](https://github.com/WordPress/gutenberg/pull/54212)). + ## 26.12.0 (2023-08-31) ## 26.11.0 (2023-08-16) From e9a946a38d2f42d5ad1fa7e1edfbf1cb6a7bbb84 Mon Sep 17 00:00:00 2001 From: Tetsuaki Hamano Date: Fri, 8 Sep 2023 17:08:21 +0900 Subject: [PATCH 3/4] Use `cwd` option --- packages/scripts/utils/config.js | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/scripts/utils/config.js b/packages/scripts/utils/config.js index bb871b6f082dc..605dd553933da 100644 --- a/packages/scripts/utils/config.js +++ b/packages/scripts/utils/config.js @@ -206,15 +206,15 @@ function getWebpackEntryPoints() { // 2. Checks whether any block metadata files can be detected in the defined source directory. // It scans all discovered files looking for JavaScript assets and converts them to entry points. - const srcDirectory = fromProjectRoot( getWordPressSrcDirectory() ) + sep; - const blockMetadataFiles = glob( - join( srcDirectory, '**/block.json' ).replace( /\\/g, '/' ), - { - absolute: true, - } - ); + const blockMetadataFiles = glob( '**/block.json', { + absolute: true, + cwd: fromProjectRoot( getWordPressSrcDirectory() ), + } ); if ( blockMetadataFiles.length > 0 ) { + const srcDirectory = fromProjectRoot( + getWordPressSrcDirectory() + sep + ); const entryPoints = blockMetadataFiles.reduce( ( accumulator, blockMetadataFile ) => { // wrapping in try/catch in case the file is malformed @@ -333,13 +333,12 @@ function getRenderPropPaths() { } // Checks whether any block metadata files can be detected in the defined source directory. + const blockMetadataFiles = glob( '**/block.json', { + absolute: true, + cwd: fromProjectRoot( getWordPressSrcDirectory() ), + } ); + const srcDirectory = fromProjectRoot( getWordPressSrcDirectory() + sep ); - const blockMetadataFiles = glob( - join( srcDirectory, '**/block.json' ).replace( /\\/g, '/' ), - { - absolute: true, - } - ); const renderPaths = blockMetadataFiles.map( ( blockMetadataFile ) => { const { render } = JSON.parse( readFileSync( blockMetadataFile ) ); From 3d95df363aeffdc2c523695fd4e3521108613a25 Mon Sep 17 00:00:00 2001 From: Tetsuaki Hamano Date: Fri, 8 Sep 2023 17:49:49 +0900 Subject: [PATCH 4/4] Apply `cwd` option to all `glob()` functions --- packages/scripts/utils/config.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/packages/scripts/utils/config.js b/packages/scripts/utils/config.js index 605dd553933da..e4e42255f95dd 100644 --- a/packages/scripts/utils/config.js +++ b/packages/scripts/utils/config.js @@ -258,9 +258,12 @@ function getWebpackEntryPoints() { // Detects the proper file extension used in the defined source directory. const [ entryFilepath ] = glob( - `${ getWordPressSrcDirectory() }/${ entryName }.[jt]s?(x)`, + `${ entryName }.[jt]s?(x)`, { absolute: true, + cwd: fromProjectRoot( + getWordPressSrcDirectory() + ), } ); @@ -300,13 +303,12 @@ function getWebpackEntryPoints() { } // 3. Checks whether a standard file name can be detected in the defined source directory, - // and converts the discovered file to entry point. - const [ entryFile ] = glob( - `${ getWordPressSrcDirectory() }/index.[jt]s?(x)`, - { - absolute: true, - } - ); + // and converts the discovered file to entry point. + const [ entryFile ] = glob( 'index.[jt]s?(x)', { + absolute: true, + cwd: fromProjectRoot( getWordPressSrcDirectory() ), + } ); + if ( ! entryFile ) { log( chalk.yellow(