From 78bc6e2e4507879633dd1d37fc7e6af4ff47bc6f Mon Sep 17 00:00:00 2001 From: Mark Sujew Date: Wed, 5 Feb 2025 12:50:33 +0100 Subject: [PATCH] Fix webpack watching --- .../src/native-webpack-plugin.ts | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/dev-packages/native-webpack-plugin/src/native-webpack-plugin.ts b/dev-packages/native-webpack-plugin/src/native-webpack-plugin.ts index 4614a36006328..2729777820d4d 100644 --- a/dev-packages/native-webpack-plugin/src/native-webpack-plugin.ts +++ b/dev-packages/native-webpack-plugin/src/native-webpack-plugin.ts @@ -58,15 +58,11 @@ export class NativeWebpackPlugin { let ripgrepIssuer: string | undefined; compiler.hooks.initialize.tap(NativeWebpackPlugin.name, async () => { const directory = path.resolve(compiler.outputPath, 'native-webpack-plugin'); - if (fs.existsSync(directory)) { - await fs.promises.rm(directory, { - force: true, + if (!fs.existsSync(directory)) { + await fs.promises.mkdir(directory, { recursive: true }); } - await fs.promises.mkdir(directory, { - recursive: true - }); const bindingsFile = (issuer: string) => buildFile(directory, 'bindings.js', bindingsReplacement(issuer, Array.from(this.bindings.entries()))); const ripgrepFile = () => buildFile(directory, 'ripgrep.js', ripgrepReplacement(this.options.out)); const keymappingFile = () => Promise.resolve('./build/Release/keymapping.node'); @@ -97,14 +93,6 @@ export class NativeWebpackPlugin { } } }); - nmf.hooks.afterResolve.tapPromise(NativeWebpackPlugin.name, async result => { - const createData = result.createData; - for (const [file, replacement] of Object.entries(replacements)) { - if (createData.resource === file) { - createData.resource = await replacement(result.contextInfo.issuer); - } - } - }); } ); compiler.hooks.afterEmit.tapPromise(NativeWebpackPlugin.name, async () => { @@ -183,7 +171,18 @@ function findNativeWatcherFile(issuer: string): string { async function buildFile(root: string, name: string, content: string): Promise { const tmpFile = path.join(root, name); - await fs.promises.writeFile(tmpFile, content); + let write = true; + try { + const existing = await fs.promises.readFile(tmpFile, 'utf8'); + if (existing === content) { + write = false; + } + } catch { + // ignore + } + if (write) { + await fs.promises.writeFile(tmpFile, content); + } return tmpFile; }