fix(windows): use local node-addon-api gyp path

This commit is contained in:
Jinwoo-H
2026-08-27 20:24:23 -04:00
parent c8818e4e54
commit 2c1ada44b0
4 changed files with 20 additions and 16 deletions
@@ -7,7 +7,7 @@ index 855bd4b86f0a3c18c7594212c0e42b6e35bc4001..5f15551cb1520af996f216500a83ac68
"target_name": "windows_process_tree",
"dependencies": [
- "<!(node -p \"require('node-addon-api').targets\"):node_addon_api_except",
+ "<!(node -p \"require.resolve('node-addon-api/node_addon_api.gyp')\"):node_addon_api_except",
+ "node_modules/node-addon-api/node_addon_api.gyp:node_addon_api_except",
],
"conditions": [
['OS==\"win\"', {
@@ -68,10 +68,10 @@ function assertPatchApplied() {
'config/patches/@vscode__windows-process-tree@0.8.0.patch; run pnpm install.'
)
}
if (!bindingGyp.includes("require.resolve('node-addon-api/node_addon_api.gyp')")) {
if (!bindingGyp.includes('node_modules/node-addon-api/node_addon_api.gyp')) {
throw new Error(
'binding.gyp still uses require("node-addon-api").targets. That path is ' +
'cwd-relative and misses node_addon_api.gyp under pnpm on Windows. ' +
'binding.gyp still uses a dynamic node-addon-api path. The local package path avoids ' +
'pnpm store and Windows drive-letter normalization issues. ' +
'pnpm did not apply config/patches/@vscode__windows-process-tree@0.8.0.patch; run pnpm install.'
)
}
@@ -94,10 +94,13 @@ function applyWindowsProcessTreeBuildFixes() {
const originalBinding = bindingGyp
const originalProcess = processCc
bindingGyp = bindingGyp.replace(
"require('node-addon-api').targets",
"require.resolve('node-addon-api/node_addon_api.gyp')"
)
const localDependency = 'node_modules/node-addon-api/node_addon_api.gyp:node_addon_api_except'
for (const dynamicDependency of [
String.raw`<!(node -p \"require('node-addon-api').targets\"):node_addon_api_except`,
String.raw`<!(node -p \"require.resolve('node-addon-api/node_addon_api.gyp')\"):node_addon_api_except`
]) {
bindingGyp = bindingGyp.replace(dynamicDependency, localDependency)
}
bindingGyp = bindingGyp.replace(
/\r?\n\s*"msvs_configuration_attributes": \{\s*"SpectreMitigation": "Spectre"\s*\},?/s,
''
@@ -9,23 +9,24 @@ const PATCH = readFileSync(
'utf8'
)
const PACKAGE_DIR = join(projectDir, 'node_modules', '@vscode', 'windows-process-tree')
const ABSOLUTE_GYP = "require.resolve('node-addon-api/node_addon_api.gyp')"
const LOCAL_GYP = 'node_modules/node-addon-api/node_addon_api.gyp'
const RESOLVED_GYP = "require.resolve('node-addon-api/node_addon_api.gyp')"
describe('windows-process-tree node-addon-api gyp path', () => {
it('keeps the gyp project path absolute so pnpm Windows source builds find it', () => {
it('keeps the gyp project path local so pnpm Windows source builds find it', () => {
expect(PATCH).toContain(
String.raw`+ "<!(node -p \"require.resolve('node-addon-api/node_addon_api.gyp')\"):node_addon_api_except"`
'+ "node_modules/node-addon-api/node_addon_api.gyp:node_addon_api_except",'
)
const buildScript = readFileSync(
join(projectDir, 'config/scripts/build-windows-process-tree-relay-addon.mjs'),
'utf8'
)
expect(buildScript).toContain(ABSOLUTE_GYP)
expect(buildScript).toContain(LOCAL_GYP)
expect(buildScript).toContain('Repaired un-applied pnpm patch hunks before build.')
})
it('resolves node_addon_api.gyp to a real file from the package directory', () => {
const resolved = execFileSync(process.execPath, ['-p', ABSOLUTE_GYP], {
const resolved = execFileSync(process.execPath, ['-p', RESOLVED_GYP], {
cwd: PACKAGE_DIR,
encoding: 'utf8'
}).trim()
+3 -3
View File
@@ -9,7 +9,7 @@ overrides:
patchedDependencies:
'@vscode/windows-process-tree@0.8.0':
hash: 679908cbad6a7791d2fdf4aeececfc717879e04c0b8ed240a016d3dc02d5f2a6
hash: 78f9cd88b7e14e56dbe43312011d21084dd05f314171ca21a24d58d1d1ab26b7
path: config/patches/@vscode__windows-process-tree@0.8.0.patch
'@xterm/addon-ligatures@0.11.0-beta.287':
hash: 47405b9994b5acf1b4e90b49250358c1ca03649854d59560e7732b72fe336920
@@ -407,7 +407,7 @@ importers:
optionalDependencies:
'@vscode/windows-process-tree':
specifier: 0.8.0
version: 0.8.0(patch_hash=679908cbad6a7791d2fdf4aeececfc717879e04c0b8ed240a016d3dc02d5f2a6)
version: 0.8.0(patch_hash=78f9cd88b7e14e56dbe43312011d21084dd05f314171ca21a24d58d1d1ab26b7)
sherpa-onnx-darwin-arm64:
specifier: 1.12.37
version: 1.12.37
@@ -9606,7 +9606,7 @@ snapshots:
convert-source-map: 2.0.0
tinyrainbow: 3.1.0
'@vscode/windows-process-tree@0.8.0(patch_hash=679908cbad6a7791d2fdf4aeececfc717879e04c0b8ed240a016d3dc02d5f2a6)':
'@vscode/windows-process-tree@0.8.0(patch_hash=78f9cd88b7e14e56dbe43312011d21084dd05f314171ca21a24d58d1d1ab26b7)':
dependencies:
node-addon-api: 7.1.0
optional: true