@@ -22,7 +22,8 @@ function Install-Packages {
22
22
23
23
# Loop through each package and install it individually
24
24
foreach ($package in $packages ) {
25
- $packageWithVersion = " $package @$buildVersion "
25
+ $packageVersion = GetValidNpmVersion - PackageName $package - Version $buildVersion
26
+ $packageWithVersion = " $package @$packageVersion "
26
27
Write-Output " Installing $packageWithVersion ..."
27
28
28
29
npm install -- save -- save-exact -- no- fund -- loglevel= error -- force $packageWithVersion
@@ -35,6 +36,42 @@ function Install-Packages {
35
36
Write-Output " `n All packages installed successfully in $folderName "
36
37
}
37
38
39
+ function Get-ValidNpmVersion {
40
+ param (
41
+ [string ]$PackageName ,
42
+ [string ]$Version
43
+ )
44
+
45
+ function Test-NpmVersionExists {
46
+ param ([string ]$Pkg , [string ]$Ver )
47
+ npm view " $Pkg @$Ver " > $null 2>&1
48
+ return ($LASTEXITCODE -eq 0 )
49
+ }
50
+
51
+ Write-Host " Checking $PackageName @$Version ..."
52
+ if (Test-NpmVersionExists - Pkg $PackageName - Ver $Version ) {
53
+ Write-Host " $PackageName @$Version exists."
54
+ return $Version
55
+ }
56
+
57
+ try {
58
+ $v = [version ]$Version
59
+ $fallback = " $ ( $v.Major ) .$ ( $v.Minor ) -stable"
60
+ } catch {
61
+ Write-Host " Invalid version format: $Version "
62
+ return $null
63
+ }
64
+
65
+ Write-Host " $PackageName @$Version not found. Trying fallback: $PackageName @$fallback ..."
66
+ if (Test-NpmVersionExists - Pkg $PackageName - Ver $fallback ) {
67
+ Write-Host " $PackageName @$fallback exists (fallback)."
68
+ return $fallback
69
+ }
70
+
71
+ Write-Host " Neither $PackageName @$Version nor @$fallback exist."
72
+ return $null
73
+ }
74
+
38
75
function Build-Project {
39
76
param (
40
77
[string ]$folderName
@@ -84,7 +121,7 @@ function Process-JavaScriptProjects {
84
121
Push-Location $folderName
85
122
86
123
try {
87
- Write-Output " `n Removing node_modules & package-lock.json: $pwd .Path "
124
+ Write-Output " `n Removing node_modules & package-lock.json: $pwd "
88
125
Remove-Item - Recurse - Force node_modules - ErrorAction SilentlyContinue
89
126
Remove-Item - Force package- lock.json - ErrorAction SilentlyContinue
90
127
Install-Packages - folderName $folderName - packages $packages - buildVersion $buildVersion
0 commit comments