Open MikeMcC399 opened 9 months ago
In Cypress 13.6.4
, node-gyp@8.4.1
is used:
(also true for Cypress 13.7.1
)
$ yarn why node-gyp
yarn why v1.22.21
[1/4] Why do we have the module "node-gyp"...?
[2/4] Initialising dependency graph...
warning Resolution field "pretty-format@26.4.0" is incompatible with requested version "pretty-format@29.4.3"
warning Resolution field "pretty-format@26.4.0" is incompatible with requested version "pretty-format@^27.0.2"
[3/4] Finding dependency...
[4/4] Calculating file sizes...
=> Found "node-gyp@9.0.0"
info Has been hoisted to "node-gyp"
info Reasons this module exists
- "workspace-aggregator-fcd5eb41-6c99-41cd-b776-c2abefb56723" depends on it
- Hoisted from "_project_#@packages#server#@electron#rebuild#node-gyp"
- Hoisted from "_project_#lerna#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#@npmcli#arborist#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#legacy-package-management#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@npmcli#arborist#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#semantic-release#@semantic-release#npm#npm#node-gyp"
- Hoisted from "_project_#lerna#@lerna#legacy-package-management#@npmcli#arborist#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#create#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#legacy-package-management#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@npmcli#arborist#@npmcli#metavuln-calculator#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#legacy-package-management#@npmcli#arborist#@npmcli#metavuln-calculator#pacote#@npmcli#run-script#node-gyp"
info Disk size without dependencies: "2.38MB"
info Disk size with unique dependencies: "5.47MB"
info Disk size with transitive dependencies: "8.69MB"
info Number of shared dependencies: 86
=> Found "@npmcli/run-script#node-gyp@8.4.1"
info This module exists because "_project_#@npmcli#run-script" depends on it.
info Disk size without dependencies: "2.56MB"
info Disk size with unique dependencies: "5.65MB"
info Disk size with transitive dependencies: "8.86MB"
info Number of shared dependencies: 86
Done in 2.21s.
Cypress has made some progress towards node-gyp
9.1
as minimum.
The current minimum version used is node-gyp@9.0.0
in cypress@13.14.2
:
$ yarn why node-gyp
yarn why v1.22.22
[1/4] Why do we have the module "node-gyp"...?
[2/4] Initialising dependency graph...
warning Resolution field "pretty-format@26.4.0" is incompatible with requested version "pretty-format@29.4.3"
warning Resolution field "devtools-protocol@0.0.1346313" is incompatible with requested version "devtools-protocol@0.0.927104"
warning Resolution field "devtools-protocol@0.0.1346313" is incompatible with requested version "devtools-protocol@0.0.1159816"
warning Resolution field "pretty-format@26.4.0" is incompatible with requested version "pretty-format@^27.0.2"
warning Resolution field "vue-template-compiler@2.6.12" is incompatible with requested version "vue-template-compiler@^2.7.14"
[3/4] Finding dependency...
[4/4] Calculating file sizes...
=> Found "node-gyp@9.0.0"
info Has been hoisted to "node-gyp"
info Reasons this module exists
- "workspace-aggregator-8230f893-66cd-428f-855e-4413c39e4f0c" depends on it
- Hoisted from "_project_#@packages#server#@electron#rebuild#node-gyp"
- Hoisted from "_project_#lerna#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#legacy-package-management#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@npmcli#arborist#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#@cypress#schematic#@angular#cli#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#legacy-package-management#@npmcli#arborist#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#create#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#legacy-package-management#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@npmcli#arborist#@npmcli#metavuln-calculator#pacote#@npmcli#run-script#node-gyp"
- Hoisted from "_project_#lerna#@lerna#legacy-package-management#@npmcli#arborist#@npmcli#metavuln-calculator#pacote#@npmcli#run-script#node-gyp"
info Disk size without dependencies: "3.42MB"
info Disk size with unique dependencies: "8.92MB"
info Disk size with transitive dependencies: "15.25MB"
info Number of shared dependencies: 81
=> Found "@npmcli/run-script#node-gyp@10.2.0"
info This module exists because "_project_#@npmcli#run-script" depends on it.
info Disk size without dependencies: "2.54MB"
info Disk size with unique dependencies: "6.15MB"
info Disk size with transitive dependencies: "11.69MB"
info Number of shared dependencies: 58
=> Found "npm#node-gyp@10.2.0"
info This module exists because "_project_#semantic-release#@semantic-release#npm#npm" depends on it.
info Disk size without dependencies: "1.79MB"
info Disk size with unique dependencies: "5.39MB"
info Disk size with transitive dependencies: "10.93MB"
info Number of shared dependencies: 58
@MikeMcC399 I feel like this changes in our Electron 29 branch - there was some battles we were having with node-gyp but I can't remember where it landed.
The minimum in branch https://github.com/cypress-io/cypress/tree/electron-29 is still node-gyp@9.0.0
.
What would you like?
Enable building Cypress from source on Windows with node-gyp@9.1.0 or later when executing
yarn
on this repository according to CONTRIBUTING > Getting Started.Why is this needed?
node-gyp recommends for Windows:
Following on from issue https://github.com/cypress-io/cypress/issues/28703, in order to build Cypress from source on Windows 10 or Windows 11, the Windows 10 SDK of Visual Studio C++ environment must be installed. If the instructions from node-gyp are followed to the letter, then only the Windows 11 SDK is installed by default on Windows 10 or Windows 11. The Cypress build uses node-gyp@8.4.1 and fails with the error:
The workaround is to additionally install a Windows 10 SDK which allows
node-gyp
to recognize that Visual Studio is installed.A more solid resolution (as opposed to a workaround) is to allow building Cypress from source using a version of node-gyp@9.1.0 or higher which includes support for recognizing the presence of a Windows 11 SDK.
Other
The version of
node-gyp
used is not explicitly specified by Cypress. It is dependent on the versions of other npm modules installed such assemantic-release
andlerna
.Note that this enhancement request is not sufficient to support building with Python
3.12
. This would require a minimum of node-gyp@10.0.0 which takes care of the removal ofdistutils
in Python3.12
.