[ 
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

Reply via email to