From 6c516ff693c1e475f9ab715a6efff0ca1c10cb0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Oliveira?= Date: Thu, 17 Aug 2023 15:46:43 -0300 Subject: [PATCH 1/3] fix: env caching --- .../next/src/config/withHeadlessConfig.ts | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/packages/next/src/config/withHeadlessConfig.ts b/packages/next/src/config/withHeadlessConfig.ts index 0e1343990..81518a58b 100644 --- a/packages/next/src/config/withHeadlessConfig.ts +++ b/packages/next/src/config/withHeadlessConfig.ts @@ -1,6 +1,8 @@ import { ConfigError, HeadlessConfig } from '@headstartwp/core'; import { NextConfig } from 'next'; import { ModifySourcePlugin, ConcatOperation } from 'modify-source-webpack-plugin'; +import path from 'path'; +import fs from 'fs'; const LINARIA_EXTENSION = '.linaria.module.css'; @@ -156,6 +158,19 @@ export function withHeadlessConfig( setHeadstartWPConfig(${JSON.stringify(headlessConfig)}); `; + if (Array.isArray(config.cache.buildDependencies.config)) { + const [nextConfigPath] = config.cache.buildDependencies.config; + + const headlessConfigPath = path.resolve(nextConfigPath, '../headless.config.js'); + + if (fs.existsSync(headlessConfigPath)) { + config.cache.buildDependencies.config.push(headlessConfigPath); + config.cache.buildDependencies.config.push( + path.resolve(nextConfigPath, '../.env.local'), + ); + } + } + config.plugins.push( new ModifySourcePlugin({ rules: [ @@ -164,6 +179,7 @@ export function withHeadlessConfig( if (!withHeadlessConfigOptions.injectConfig) { return false; } + const userRequest = normalModule.userRequest || ''; const startIndex = @@ -175,11 +191,19 @@ export function withHeadlessConfig( .substring(startIndex) .replace(/\\/g, '/'); + // skip next/dist/pages/_app.js + if (/next\/dist\/pages\/_app.js/.test(moduleRequest)) { + return false; + } + const matched = /_app.(tsx|ts|js|mjs|jsx)$/.test(moduleRequest) || /middleware.(ts|js|mjs)$/.test(moduleRequest) || /pages\/api\/.*.(ts|js|mjs)/.test(moduleRequest); + if (matched) { + console.log('matched', moduleRequest); + } return matched; }, operations: [new ConcatOperation('start', importSetHeadlessConfig)], From ebacd84c381500203976336dc089b5c15060e276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Oliveira?= Date: Fri, 25 Aug 2023 00:40:54 -0300 Subject: [PATCH 2/3] fix: clear webpack cache when env files or headless.config.js changes --- .changeset/tame-squids-fail.md | 5 + package-lock.json | 105 ++++++++++++++++++ .../next/src/config/withHeadlessConfig.ts | 19 +++- 3 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 .changeset/tame-squids-fail.md diff --git a/.changeset/tame-squids-fail.md b/.changeset/tame-squids-fail.md new file mode 100644 index 000000000..cdd055daa --- /dev/null +++ b/.changeset/tame-squids-fail.md @@ -0,0 +1,5 @@ +--- +"@headstartwp/next": patch +--- + +Fix an annoying bug that would require deleting the .next/cache folder after change headless.config.js or .env files diff --git a/package-lock.json b/package-lock.json index 252c2ae04..300851db5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21836,6 +21836,111 @@ "engines": { "node": ">=16.0.0" } + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-13.4.4.tgz", + "integrity": "sha512-xfjgXvp4KalNUKZMHmsFxr1Ug+aGmmO6NWP0uoh4G3WFqP/mJ1xxfww0gMOeMeSq/Jyr5k7DvoZ2Pv+XOITTtw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-13.4.4.tgz", + "integrity": "sha512-ZY9Ti1hkIwJsxGus3nlubIkvYyB0gNOYxKrfsOrLEqD0I2iCX8D7w8v6QQZ2H+dDl6UT29oeEUdDUNGk4UEpfg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-13.4.4.tgz", + "integrity": "sha512-+KZnDeMShYkpkqAvGCEDeqYTRADJXc6SY1jWXz+Uo6qWQO/Jd9CoyhTJwRSxvQA16MoYzvILkGaDqirkRNctyA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-13.4.4.tgz", + "integrity": "sha512-evC1twrny2XDT4uOftoubZvW3EG0zs0ZxMwEtu/dDGVRO5n5pT48S8qqEIBGBUZYu/Xx4zzpOkIxx1vpWdE+9A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-13.4.4.tgz", + "integrity": "sha512-FP8AadgSq4+HPtim7WBkCMGbhr5vh9FePXiWx9+YOdjwdQocwoCK5ZVC3OW8oh3TWth6iJ0AXJ/yQ1q1cwSZ3A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-ia32-msvc": { + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-13.4.4.tgz", + "integrity": "sha512-3WekVmtuA2MCdcAOrgrI+PuFiFURtSyyrN1I3UPtS0ckR2HtLqyqmS334Eulf15g1/bdwMteePdK363X/Y9JMg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "13.4.4", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-13.4.4.tgz", + "integrity": "sha512-AHRITu/CrlQ+qzoqQtEMfaTu7GHaQ6bziQln/pVWpOYC1wU+Mq6VQQFlsDtMCnDztPZtppAXdvvbNS7pcfRzlw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } } } } diff --git a/packages/next/src/config/withHeadlessConfig.ts b/packages/next/src/config/withHeadlessConfig.ts index 81518a58b..bcd5ab039 100644 --- a/packages/next/src/config/withHeadlessConfig.ts +++ b/packages/next/src/config/withHeadlessConfig.ts @@ -158,16 +158,29 @@ export function withHeadlessConfig( setHeadstartWPConfig(${JSON.stringify(headlessConfig)}); `; + // clear webpack cache whenever headless.config.js changes or one of the env files if (Array.isArray(config.cache.buildDependencies.config)) { const [nextConfigPath] = config.cache.buildDependencies.config; const headlessConfigPath = path.resolve(nextConfigPath, '../headless.config.js'); + const envLocalPath = path.resolve(nextConfigPath, '../.env.local'); + const envPath = path.resolve(nextConfigPath, '../.env'); + const envDevPath = path.resolve(nextConfigPath, '../.env.development'); if (fs.existsSync(headlessConfigPath)) { config.cache.buildDependencies.config.push(headlessConfigPath); - config.cache.buildDependencies.config.push( - path.resolve(nextConfigPath, '../.env.local'), - ); + } + + if (fs.existsSync(envLocalPath)) { + config.cache.buildDependencies.config.push(envLocalPath); + } + + if (fs.existsSync(envPath)) { + config.cache.buildDependencies.config.push(envPath); + } + + if (fs.existsSync(envDevPath)) { + config.cache.buildDependencies.config.push(envDevPath); } } From 8c3c0118077ebabc023df9c278e1f7c77c98a421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=C3=ADcholas=20Oliveira?= Date: Fri, 25 Aug 2023 00:45:02 -0300 Subject: [PATCH 3/3] chore: update changeset --- .changeset/tame-squids-fail.md | 2 +- packages/next/src/config/withHeadlessConfig.ts | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/.changeset/tame-squids-fail.md b/.changeset/tame-squids-fail.md index cdd055daa..afc38e0db 100644 --- a/.changeset/tame-squids-fail.md +++ b/.changeset/tame-squids-fail.md @@ -2,4 +2,4 @@ "@headstartwp/next": patch --- -Fix an annoying bug that would require deleting the .next/cache folder after change headless.config.js or .env files +Fix an annoying bug that would require deleting the .next/cache folder after changing headless.config.js or .env files. Now you only need to restart the next.js server after changing those files. diff --git a/packages/next/src/config/withHeadlessConfig.ts b/packages/next/src/config/withHeadlessConfig.ts index bcd5ab039..0b08d7a5a 100644 --- a/packages/next/src/config/withHeadlessConfig.ts +++ b/packages/next/src/config/withHeadlessConfig.ts @@ -214,9 +214,6 @@ export function withHeadlessConfig( /middleware.(ts|js|mjs)$/.test(moduleRequest) || /pages\/api\/.*.(ts|js|mjs)/.test(moduleRequest); - if (matched) { - console.log('matched', moduleRequest); - } return matched; }, operations: [new ConcatOperation('start', importSetHeadlessConfig)],