You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Zak (JIRA)" <ji...@apache.org> on 2018/06/13 23:29:00 UTC
[jira] [Updated] (CB-14133) Avoid reinstalling already installed
plugins in cordova-fetch
[ 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