@@ -16,9 +16,8 @@ import (
16
16
)
17
17
18
18
const (
19
- nodejsMinVersion = 20
20
- nodejsLatestLTS = "20.11.1"
21
- nodeTypesVersion = "20.11.20"
19
+ nodejsMinVersion = 22
20
+ nodeTypesVersion = "20.12.8"
22
21
denoStdVersion = "0.177.1"
23
22
)
24
23
@@ -76,27 +75,28 @@ var nodejsInternalModules = map[string]bool{
76
75
"zlib" : true ,
77
76
}
78
77
79
- var denoNextUnspportedNodeModules = map [string ]bool {
80
- "inspector" : true ,
81
- }
82
-
83
78
func checkNodejs (installDir string ) (nodeVersion string , pnpmVersion string , err error ) {
84
79
nodeVersion , major , err := getNodejsVersion ()
85
- usingSystemNodejs := err == nil && major >= nodejsMinVersion
80
+ useSystemNodejs := err == nil && major >= nodejsMinVersion
86
81
87
- if ! usingSystemNodejs {
82
+ if ! useSystemNodejs {
88
83
PATH := os .Getenv ("PATH" )
89
84
nodeBinDir := path .Join (installDir , "bin" )
90
85
if ! strings .Contains (PATH , nodeBinDir ) {
91
86
os .Setenv ("PATH" , fmt .Sprintf ("%s%c%s" , nodeBinDir , os .PathListSeparator , PATH ))
92
87
}
93
88
nodeVersion , major , err = getNodejsVersion ()
94
89
if err != nil || major < nodejsMinVersion {
95
- err = installNodejs (installDir , nodejsLatestLTS )
90
+ var latestVersion string
91
+ latestVersion , err = getNodejsLatestVersion ()
92
+ if err != nil {
93
+ return
94
+ }
95
+ err = installNodejs (installDir , latestVersion )
96
96
if err != nil {
97
97
return
98
98
}
99
- log .Infof ("nodejs %s installed" , nodejsLatestLTS )
99
+ log .Infof ("nodejs %s installed" , latestVersion )
100
100
}
101
101
nodeVersion , major , err = getNodejsVersion ()
102
102
}
@@ -134,6 +134,27 @@ func getNodejsVersion() (version string, major int, err error) {
134
134
return
135
135
}
136
136
137
+ func getNodejsLatestVersion () (verison string , err error ) {
138
+ var res * http.Response
139
+ res , err = http .Get (fmt .Sprintf ("https://nodejs.org/download/release/latest-v%d.x/" , nodejsMinVersion ))
140
+ if err != nil {
141
+ return
142
+ }
143
+ defer res .Body .Close ()
144
+ var body []byte
145
+ body , err = io .ReadAll (res .Body )
146
+ if err != nil {
147
+ return
148
+ }
149
+ i := strings .Index (string (body ), fmt .Sprintf ("node-v%d." , nodejsMinVersion ))
150
+ if i < 0 {
151
+ err = fmt .Errorf ("no nodejs version found" )
152
+ return
153
+ }
154
+ verison , _ = utils .SplitByFirstByte (string (body [i + 5 :]), '-' )
155
+ return
156
+ }
157
+
137
158
func installNodejs (installDir string , version string ) (err error ) {
138
159
arch := runtime .GOARCH
139
160
switch arch {
@@ -142,7 +163,7 @@ func installNodejs(installDir string, version string) (err error) {
142
163
case "386" :
143
164
arch = "x86"
144
165
}
145
- dlURL := fmt .Sprintf ("https://nodejs.org/dist/v %s/node-v %s-%s-%s.tar.xz" , version , version , runtime .GOOS , arch )
166
+ dlURL := fmt .Sprintf ("https://nodejs.org/dist/%s/node-%s-%s-%s.tar.xz" , version , version , runtime .GOOS , arch )
146
167
resp , err := http .Get (dlURL )
147
168
if err != nil {
148
169
err = fmt .Errorf ("download nodejs: %v" , err )
0 commit comments