cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Zak (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CB-14133) Avoid reinstalling already installed plugins in cordova-fetch
Date Wed, 13 Jun 2018 23:29:00 GMT

     [ https://issues.apache.org/jira/browse/CB-14133?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Zak updated CB-14133:
---------------------
    Description: 
Relates to CB-13992

The pull request for CB-13992 removed the `dependency-ls` package which helped to speed up
the platform add step. However, each plugin still gets `npm install`ed seemingly just to determine
the package name. 

Typical workflow is to run `npm install` as the first task after cloning a node repository.
The current practice for cordova is to save plugins to the package.json meaning that plugins
are already installed to the node_modules directory, so running `npm install` for each of
them individually is redundant.

If the main function in `cordova-fetch` is simplified to just return the path to the given
module (albeit this isn't the most elegant implementation):

```
 module.exports = function (target, dest, opts = {}) {
 var fetchArgs = opts.link ? ['link'] : ['list'];
 var nodeModulesDir = dest + '/node_modules/';

// check if npm is installed
 return module.exports.isNpmInstalled()
 .then(function ()

{ const mod = target.slice(0, target.lastIndexOf('@')); return path.resolve(nodeModulesDir,
mod) }

)
 .catch(function (err)

{ throw new CordovaError(err); }

);
 };
 ```

the platform add process runs almost instantly rather than taking a few minutes.

  was:
Relates to CB-13992


The pull request for CB-13992 removed the ```dependency-ls``` package which helped to speed
up the platform add step. However, each plugin still gets ```npm install```ed seemingly just
to determine the package name. 

Typical workflow is to run ```npm install``` as the first task after cloning a node repository.
The current practice for cordova is to save plugins to the package.json meaning that plugins
are already installed to the node_modules directory, so running `npm install` for each of
them individually is redundant.

If the main function in ```cordova-fetch``` is simplified to just return the path to the
given module (albeit this isn't the most elegant implementation):

```javascript
module.exports = function (target, dest, opts = {}) {
    var fetchArgs = opts.link ? ['link'] : ['list'];
    var nodeModulesDir = dest + '/node_modules/';

    // check if npm is installed
    return module.exports.isNpmInstalled()
        .then(function () {
            const mod = target.slice(0, target.lastIndexOf('@'));
            return path.resolve(nodeModulesDir, mod)
        })
        .catch(function (err) {
            throw new CordovaError(err);
        });
};
```

the platform add process runs almost instantly rather than taking a few minutes.


> Avoid reinstalling already installed plugins in cordova-fetch
> -------------------------------------------------------------
>
>                 Key: CB-14133
>                 URL: https://issues.apache.org/jira/browse/CB-14133
>             Project: Apache Cordova
>          Issue Type: Wish
>          Components: cordova-cli, cordova-fetch
>    Affects Versions: 8.0.0
>            Reporter: Zak
>            Priority: Minor
>
> Relates to CB-13992
> The pull request for CB-13992 removed the `dependency-ls` package which helped to speed
up the platform add step. However, each plugin still gets `npm install`ed seemingly just to
determine the package name. 
> Typical workflow is to run `npm install` as the first task after cloning a node repository.
The current practice for cordova is to save plugins to the package.json meaning that plugins
are already installed to the node_modules directory, so running `npm install` for each of
them individually is redundant.
> If the main function in `cordova-fetch` is simplified to just return the path to the
given module (albeit this isn't the most elegant implementation):
> ```
>  module.exports = function (target, dest, opts = {}) {
>  var fetchArgs = opts.link ? ['link'] : ['list'];
>  var nodeModulesDir = dest + '/node_modules/';
> // check if npm is installed
>  return module.exports.isNpmInstalled()
>  .then(function ()
> { const mod = target.slice(0, target.lastIndexOf('@')); return path.resolve(nodeModulesDir,
mod) }
> )
>  .catch(function (err)
> { throw new CordovaError(err); }
> );
>  };
>  ```
> the platform add process runs almost instantly rather than taking a few minutes.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org


Mime
View raw message