From 9a72b24bddb1a5a5faca737acac9c2dbe07727fa Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 17 Sep 2022 16:20:00 +0530 Subject: [PATCH 01/10] fix: respect `NODE_PATH` env variable --- packages/webpack-cli/src/webpack-cli.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/webpack-cli/src/webpack-cli.ts b/packages/webpack-cli/src/webpack-cli.ts index cc7a8821d20..f96d162f9cf 100644 --- a/packages/webpack-cli/src/webpack-cli.ts +++ b/packages/webpack-cli/src/webpack-cli.ts @@ -148,7 +148,10 @@ class WebpackCLI implements IWebpackCLI { do { try { - if (fs.statSync(path.join(dir, "node_modules", packageName)).isDirectory()) { + const packagePath = process.env.NODE_PATH + ? path.join(process.env.NODE_PATH, packageName) + : path.join(dir, "node_modules", packageName); + if (fs.statSync(packagePath).isDirectory()) { return true; } } catch (_error) { From e20e90ef938609bcf79abdfe92d0d3909558e1c2 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Tue, 20 Sep 2022 07:50:45 +0530 Subject: [PATCH 02/10] ci: add NODE_PATH --- .github/workflows/nodejs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 2f20bb025ad..c453df8778e 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -82,6 +82,8 @@ jobs: - name: Run tests and generate coverage run: yarn test:coverage --ci --shard=${{ matrix.shard }} + env: + NODE_PATH: ${{ github.workspace }}/node_modules - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 From ffae46da58336a520ba269e61e64dea2c4a7cf4d Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 24 Sep 2022 06:45:34 +0530 Subject: [PATCH 03/10] ci: debug --- scripts/setupTest.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/setupTest.js b/scripts/setupTest.js index 187bc7f5d79..a85202e53ed 100644 --- a/scripts/setupTest.js +++ b/scripts/setupTest.js @@ -1,5 +1,7 @@ jest.setTimeout(240000); +// Debug +console.log("NODE_PATH->", process.env.NODE_PATH); if (!expect.getState().testPath.includes("colors.test.js")) { process.env.NO_COLOR = true; } From 6bb8a79a7684bfa697fbef8aae0b9453b44718fd Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 24 Sep 2022 06:56:17 +0530 Subject: [PATCH 04/10] ci: debug --- .github/workflows/nodejs.yml | 2 -- packages/webpack-cli/src/webpack-cli.ts | 3 +++ scripts/globalSetup.js | 3 ++- scripts/setupTest.js | 2 -- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index c453df8778e..2f20bb025ad 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -82,8 +82,6 @@ jobs: - name: Run tests and generate coverage run: yarn test:coverage --ci --shard=${{ matrix.shard }} - env: - NODE_PATH: ${{ github.workspace }}/node_modules - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 diff --git a/packages/webpack-cli/src/webpack-cli.ts b/packages/webpack-cli/src/webpack-cli.ts index f96d162f9cf..5f74a916835 100644 --- a/packages/webpack-cli/src/webpack-cli.ts +++ b/packages/webpack-cli/src/webpack-cli.ts @@ -955,6 +955,9 @@ class WebpackCLI implements IWebpackCLI { "output-path", ]; + // DEBUG + console.log(this.webpack); + // Extract all the flags being exported from core. // A list of cli flags generated by core can be found here https://github.com/webpack/webpack/blob/master/test/__snapshots__/Cli.test.js.snap const coreArguments = Object.entries(this.webpack.cli.getArguments()).map(([flag, meta]) => { diff --git a/scripts/globalSetup.js b/scripts/globalSetup.js index c38c758c60d..1a11f13e153 100644 --- a/scripts/globalSetup.js +++ b/scripts/globalSetup.js @@ -1,3 +1,4 @@ const { version } = require("webpack"); -module.exports = () => console.log(`\n Running tests for webpack @${version} \n`); +module.exports = () => + console.log(`\n Running tests for webpack @${version} \n NODE_PATH-> ${process.env.NODE_PATH}`); diff --git a/scripts/setupTest.js b/scripts/setupTest.js index a85202e53ed..187bc7f5d79 100644 --- a/scripts/setupTest.js +++ b/scripts/setupTest.js @@ -1,7 +1,5 @@ jest.setTimeout(240000); -// Debug -console.log("NODE_PATH->", process.env.NODE_PATH); if (!expect.getState().testPath.includes("colors.test.js")) { process.env.NO_COLOR = true; } From 5f5e4ce5659f9c257ef54b1137e37e8323980271 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 24 Sep 2022 07:06:05 +0530 Subject: [PATCH 05/10] ci: debug --- packages/webpack-cli/src/webpack-cli.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/webpack-cli/src/webpack-cli.ts b/packages/webpack-cli/src/webpack-cli.ts index 5f74a916835..f96d162f9cf 100644 --- a/packages/webpack-cli/src/webpack-cli.ts +++ b/packages/webpack-cli/src/webpack-cli.ts @@ -955,9 +955,6 @@ class WebpackCLI implements IWebpackCLI { "output-path", ]; - // DEBUG - console.log(this.webpack); - // Extract all the flags being exported from core. // A list of cli flags generated by core can be found here https://github.com/webpack/webpack/blob/master/test/__snapshots__/Cli.test.js.snap const coreArguments = Object.entries(this.webpack.cli.getArguments()).map(([flag, meta]) => { From 8f54144df3b4b700769f4ee2ce79dc9aa94f462f Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 24 Sep 2022 08:22:38 +0530 Subject: [PATCH 06/10] ci: debug --- .github/workflows/nodejs.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 2f20bb025ad..c453df8778e 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -82,6 +82,8 @@ jobs: - name: Run tests and generate coverage run: yarn test:coverage --ci --shard=${{ matrix.shard }} + env: + NODE_PATH: ${{ github.workspace }}/node_modules - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 From a7aceb925675bf845946282cde8f3b89c239ffa2 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 24 Sep 2022 13:19:55 +0530 Subject: [PATCH 07/10] ci: debug --- .github/workflows/nodejs.yml | 2 -- test/utils/test-utils.js | 5 ++++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index c453df8778e..2f20bb025ad 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -82,8 +82,6 @@ jobs: - name: Run tests and generate coverage run: yarn test:coverage --ci --shard=${{ matrix.shard }} - env: - NODE_PATH: ${{ github.workspace }}/node_modules - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 diff --git a/test/utils/test-utils.js b/test/utils/test-utils.js index bd3be2b9146..5f708be6baf 100644 --- a/test/utils/test-utils.js +++ b/test/utils/test-utils.js @@ -53,7 +53,10 @@ const createProcess = (cwd, args, options) => { reject: false, stdio: ENABLE_LOG_COMPILATION ? "inherit" : "pipe", maxBuffer: Infinity, - env: { WEBPACK_CLI_HELP_WIDTH: 1024 }, + env: { + WEBPACK_CLI_HELP_WIDTH: 1024, + NODE_PATH: path.resolve(__dirname, "../../node_modules"), + }, ...options, }); }; From fd6a0fbe8e4e3432d79a081f732fae9dc703c0b4 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 24 Sep 2022 13:33:51 +0530 Subject: [PATCH 08/10] fix: ci --- packages/webpack-cli/src/webpack-cli.ts | 13 +++++++++---- scripts/globalSetup.js | 3 +-- test/utils/test-utils.js | 5 +---- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/webpack-cli/src/webpack-cli.ts b/packages/webpack-cli/src/webpack-cli.ts index f96d162f9cf..3b02bdd2063 100644 --- a/packages/webpack-cli/src/webpack-cli.ts +++ b/packages/webpack-cli/src/webpack-cli.ts @@ -144,14 +144,19 @@ class WebpackCLI implements IWebpackCLI { return true; } + // Respect NODE_PATH environment variable + if ( + process.env.NODE_PATH && + fs.statSync(path.join(process.env.NODE_PATH, packageName)).isDirectory() + ) { + return true; + } + let dir = __dirname; do { try { - const packagePath = process.env.NODE_PATH - ? path.join(process.env.NODE_PATH, packageName) - : path.join(dir, "node_modules", packageName); - if (fs.statSync(packagePath).isDirectory()) { + if (fs.statSync(path.join(dir, "node_modules", packageName)).isDirectory()) { return true; } } catch (_error) { diff --git a/scripts/globalSetup.js b/scripts/globalSetup.js index 1a11f13e153..c38c758c60d 100644 --- a/scripts/globalSetup.js +++ b/scripts/globalSetup.js @@ -1,4 +1,3 @@ const { version } = require("webpack"); -module.exports = () => - console.log(`\n Running tests for webpack @${version} \n NODE_PATH-> ${process.env.NODE_PATH}`); +module.exports = () => console.log(`\n Running tests for webpack @${version} \n`); diff --git a/test/utils/test-utils.js b/test/utils/test-utils.js index 5f708be6baf..bd3be2b9146 100644 --- a/test/utils/test-utils.js +++ b/test/utils/test-utils.js @@ -53,10 +53,7 @@ const createProcess = (cwd, args, options) => { reject: false, stdio: ENABLE_LOG_COMPILATION ? "inherit" : "pipe", maxBuffer: Infinity, - env: { - WEBPACK_CLI_HELP_WIDTH: 1024, - NODE_PATH: path.resolve(__dirname, "../../node_modules"), - }, + env: { WEBPACK_CLI_HELP_WIDTH: 1024 }, ...options, }); }; From 415373e79db4c357a5a0268155467e5beb230e21 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Sat, 24 Sep 2022 13:40:54 +0530 Subject: [PATCH 09/10] fix: ci --- packages/webpack-cli/src/webpack-cli.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/packages/webpack-cli/src/webpack-cli.ts b/packages/webpack-cli/src/webpack-cli.ts index 3b02bdd2063..98316b32111 100644 --- a/packages/webpack-cli/src/webpack-cli.ts +++ b/packages/webpack-cli/src/webpack-cli.ts @@ -145,11 +145,15 @@ class WebpackCLI implements IWebpackCLI { } // Respect NODE_PATH environment variable - if ( - process.env.NODE_PATH && - fs.statSync(path.join(process.env.NODE_PATH, packageName)).isDirectory() - ) { - return true; + try { + if ( + process.env.NODE_PATH && + fs.statSync(path.join(process.env.NODE_PATH, packageName)).isDirectory() + ) { + return true; + } + } catch (_error) { + // Nothing } let dir = __dirname; From 080c6cc97cfd4ac8807ac8788bed8f73264cc532 Mon Sep 17 00:00:00 2001 From: Nitin Kumar Date: Tue, 27 Sep 2022 09:21:55 +0530 Subject: [PATCH 10/10] refactor: code --- packages/webpack-cli/src/webpack-cli.ts | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/packages/webpack-cli/src/webpack-cli.ts b/packages/webpack-cli/src/webpack-cli.ts index 98316b32111..f64e88f1fff 100644 --- a/packages/webpack-cli/src/webpack-cli.ts +++ b/packages/webpack-cli/src/webpack-cli.ts @@ -144,18 +144,6 @@ class WebpackCLI implements IWebpackCLI { return true; } - // Respect NODE_PATH environment variable - try { - if ( - process.env.NODE_PATH && - fs.statSync(path.join(process.env.NODE_PATH, packageName)).isDirectory() - ) { - return true; - } - } catch (_error) { - // Nothing - } - let dir = __dirname; do { @@ -168,6 +156,17 @@ class WebpackCLI implements IWebpackCLI { } } while (dir !== (dir = path.dirname(dir))); + // https://github.com/nodejs/node/blob/v18.9.1/lib/internal/modules/cjs/loader.js#L1274 + for (const internalPath of require("module").globalPaths) { + try { + if (fs.statSync(path.join(internalPath, packageName)).isDirectory()) { + return true; + } + } catch (_error) { + // Nothing + } + } + return false; }