[ https://issues.apache.org/jira/browse/CB-11985?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15561706#comment-15561706 ]
ASF GitHub Bot commented on CB-11985: ------------------------------------- Github user TimBarham commented on a diff in the pull request: https://github.com/apache/cordova-lib/pull/498#discussion_r82566198 --- Diff: cordova-lib/src/util/npm-helper.js --- @@ -72,4 +75,53 @@ function restoreSettings() { } } +/** + * Fetches the latest version of a package from NPM that matches the specified version. Returns a promise that + * resolves to the directory the NPM package is located in. + * @param packageName - name of an npm package + * @param packageVersion - requested version or version range + */ +function fetchPackage(packageName, packageVersion) { + // Get the latest matching version from NPM if a version range is specified + return util.getLatestMatchingNpmVersion(packageName, packageVersion).then( + function (latestVersion) { + return cachePackage(packageName, latestVersion); + } + ); +} + +/** + * Invokes "npm cache add," and then returns a promise that resolves to a directory containing the downloaded, + * or cached package. + * @param packageName - name of an npm package + * @param packageVersion - requested version (not a version range) + */ +function cachePackage(packageName, packageVersion) { + var cacheDir = path.join(util.libDirectory, 'npm_cache'); + + // If already cached, use that rather than calling 'npm cache add' again. + var packageCacheDir = path.resolve(cacheDir, packageName, packageVersion); --- End diff -- Sure I'll wrap the whole method in a promise. > Cordova hits internet unnecessarily when getting cached platform or plugin > -------------------------------------------------------------------------- > > Key: CB-11985 > URL: https://issues.apache.org/jira/browse/CB-11985 > Project: Apache Cordova > Issue Type: Improvement > Components: CordovaLib > Affects Versions: 6.3.1 > Reporter: Tim Barham > Assignee: Tim Barham > > In you are disconnected from the internet and try to add a platform or plugin > that has previously been cached, Cordova eventually successfully installs the > platform/plugin, but only after a very long wait. > We could check for the existence of the cached platform/plugin before calling > {{npm cache add}}. This would mean an instant return when not connected to > the internet. > Note that this will only help if we are adding a specific version - when a > version range is specified, we need to hit the internet anyway to find the > matching version. > Background: First time build failures in Cordova tools in Visual Studio are > primarily due to {{npm}} failures. Therefore we are working to avoid any > requirement for {{npm}}} to hit the internet in simple build scenarios. This > includes pre-installing cached versions of certain platforms and plugins. But > we only get the full benefit if Cordova uses these cached versions if it > finds them, without calling {{npm cache add}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332) --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@cordova.apache.org For additional commands, e-mail: issues-h...@cordova.apache.org