8
8
import org .jfrog .build .api .Module ;
9
9
import org .jfrog .build .api .builder .ModuleBuilder ;
10
10
import org .jfrog .build .api .util .Log ;
11
+ import org .jfrog .build .client .ProxyConfiguration ;
11
12
import org .jfrog .build .extractor .BuildInfoExtractor ;
12
13
import org .jfrog .build .extractor .clientConfiguration .ArtifactoryDependenciesClientBuilder ;
13
14
import org .jfrog .build .extractor .clientConfiguration .client .ArtifactoryDependenciesClient ;
@@ -44,6 +45,7 @@ public class NpmBuildInfoExtractor implements BuildInfoExtractor<NpmProject> {
44
45
private NpmDriver npmDriver ;
45
46
private String npmRegistry ;
46
47
private Properties npmAuth ;
48
+ private String npmProxy ;
47
49
private Log logger ;
48
50
49
51
NpmBuildInfoExtractor (ArtifactoryDependenciesClientBuilder dependenciesClientBuilder , NpmDriver npmDriver , Log logger ) {
@@ -71,6 +73,7 @@ private void preparePrerequisites(String resolutionRepository, Path workingDir)
71
73
try (ArtifactoryDependenciesClient dependenciesClient = dependenciesClientBuilder .build ()) {
72
74
setNpmAuth (dependenciesClient );
73
75
setRegistryUrl (dependenciesClient , resolutionRepository );
76
+ setNpmProxy (dependenciesClient );
74
77
}
75
78
readPackageInfoFromPackageJson (workingDir );
76
79
backupProjectNpmrc (workingDir );
@@ -88,6 +91,20 @@ private void setRegistryUrl(ArtifactoryDependenciesClient dependenciesClient, St
88
91
npmRegistry += "api/npm/" + resolutionRepository ;
89
92
}
90
93
94
+ private void setNpmProxy (ArtifactoryDependenciesClient dependenciesClient ) {
95
+ ProxyConfiguration proxyConfiguration = dependenciesClient .getProxyConfiguration ();
96
+ if (proxyConfiguration == null || StringUtils .isBlank (proxyConfiguration .host )) {
97
+ return ;
98
+ }
99
+ npmProxy = "http://" ;
100
+ String username = proxyConfiguration .username ;
101
+ String password = proxyConfiguration .password ;
102
+ if (StringUtils .isNoneBlank (username ) && StringUtils .isNotBlank (password )) {
103
+ npmProxy += username + ":" + password + "@" ;
104
+ }
105
+ npmProxy += proxyConfiguration .host + ":" + proxyConfiguration .port ;
106
+ }
107
+
91
108
private void readPackageInfoFromPackageJson (Path workingDir ) throws IOException {
92
109
try (FileInputStream fis = new FileInputStream (workingDir .resolve ("package.json" ).toFile ())) {
93
110
npmPackageInfo .readPackageInfo (fis );
@@ -126,6 +143,11 @@ private void createTempNpmrc(Path workingDir, List<String> installationArgs) thr
126
143
npmrcProperties .setProperty ("registry" , npmRegistry );
127
144
npmrcProperties .remove ("metrics-registry" );
128
145
146
+ // Save npm proxy
147
+ if (StringUtils .isNotBlank (npmProxy )) {
148
+ npmrcProperties .setProperty ("proxy" , npmProxy );
149
+ }
150
+
129
151
// Write npmrc file
130
152
StringBuilder stringBuffer = new StringBuilder ();
131
153
npmrcProperties .forEach ((key , value ) -> stringBuffer .append (key ).append ("=" ).append (value ).append ("\n " ));
0 commit comments