| 756 | } |
| 757 | |
| 758 | function checkYarnVersion() { |
| 759 | const minYarnPnp = '1.12.0'; |
| 760 | const maxYarnPnp = '2.0.0'; |
| 761 | let hasMinYarnPnp = false; |
| 762 | let hasMaxYarnPnp = false; |
| 763 | let yarnVersion = null; |
| 764 | try { |
| 765 | yarnVersion = execSync('yarnpkg --version').toString().trim(); |
| 766 | if (semver.valid(yarnVersion)) { |
| 767 | hasMinYarnPnp = semver.gte(yarnVersion, minYarnPnp); |
| 768 | hasMaxYarnPnp = semver.lt(yarnVersion, maxYarnPnp); |
| 769 | } else { |
| 770 | // Handle non-semver compliant yarn version strings, which yarn currently |
| 771 | // uses for nightly builds. The regex truncates anything after the first |
| 772 | // dash. See #5362. |
| 773 | const trimmedYarnVersionMatch = /^(.+?)[-+].+$/.exec(yarnVersion); |
| 774 | if (trimmedYarnVersionMatch) { |
| 775 | const trimmedYarnVersion = trimmedYarnVersionMatch.pop(); |
| 776 | hasMinYarnPnp = semver.gte(trimmedYarnVersion, minYarnPnp); |
| 777 | hasMaxYarnPnp = semver.lt(trimmedYarnVersion, maxYarnPnp); |
| 778 | } |
| 779 | } |
| 780 | } catch (err) { |
| 781 | // ignore |
| 782 | } |
| 783 | return { |
| 784 | hasMinYarnPnp: hasMinYarnPnp, |
| 785 | hasMaxYarnPnp: hasMaxYarnPnp, |
| 786 | yarnVersion: yarnVersion, |
| 787 | }; |
| 788 | } |
| 789 | |
| 790 | function checkNodeVersion(packageName) { |
| 791 | const packageJsonPath = path.resolve( |