[ 
https://issues.apache.org/jira/browse/CB-11117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15261775#comment-15261775
 ] 

ASF GitHub Bot commented on CB-11117:
-------------------------------------

Github user vladimir-kotikov commented on a diff in the pull request:

    https://github.com/apache/cordova-android/pull/295#discussion_r61392785
  
    --- Diff: bin/templates/cordova/lib/prepare.js ---
    @@ -26,26 +26,43 @@ var AndroidManifest = require('./AndroidManifest');
     var xmlHelpers = require('cordova-common').xmlHelpers;
     var CordovaError = require('cordova-common').CordovaError;
     var ConfigParser = require('cordova-common').ConfigParser;
    +var FileUpdater = require('cordova-common').FileUpdater;
     
    -module.exports.prepare = function (cordovaProject) {
    +module.exports.prepare = function (cordovaProject, options) {
     
         var self = this;
    +    var platformResourcesDir = path.relative(cordovaProject.root, 
path.join(this.locations.root, 'res'));
     
         this._config = updateConfigFilesFrom(cordovaProject.projectConfig,
             this._munger, this.locations);
     
         // Update own www dir with project's www assets and plugins' assets 
and js-files
    -    return Q.when(updateWwwFrom(cordovaProject, this.locations))
    +    return Q.when(updateWww.call(self, cordovaProject))
         .then(function () {
             // update project according to config.xml changes.
             return updateProjectAccordingTo(self._config, self.locations);
         })
         .then(function () {
    -        handleIcons(cordovaProject.projectConfig, self.root);
    -        handleSplashes(cordovaProject.projectConfig, self.root);
    +        updateIcons.call(self, cordovaProject, platformResourcesDir);
    +        updateSplashes.call(self, cordovaProject, platformResourcesDir);
         })
         .then(function () {
    -        events.emit('verbose', 'updated project successfully');
    +        events.emit('verbose', 'Prepared project successfully');
    +    });
    +};
    +
    +module.exports.clean = function (options) {
    +    // Unfortunately the cordovaProject isn't passed into the clean() 
function,
    +    // but the project root dir and config can be resolved here easily.
    --- End diff --
    
    The `cordovaProject` is not passed here because the `clean` command is also 
accessible in non-CLI workflow through shell script (as opposed to `prepare`, 
which is intended to be called from CLI only). In this case resolving project's 
root is a bad idea, as there might not be any project at all.
    
    Also, calling this in non-CLI project would destroy the project, as these 
files are not copied from the root project but were added by developer 
manually. IMO this functionality should be hidden behind the flag, so user 
would not wipe these files unintentionally.


> Preparing platforms should skip copying files which haven't changed
> -------------------------------------------------------------------
>
>                 Key: CB-11117
>                 URL: https://issues.apache.org/jira/browse/CB-11117
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: Android, iOS, Windows
>            Reporter: Jason Ginchereau
>            Assignee: Jason Ginchereau
>
> Many cordova CLI commands include a "prepare" operation, including 'cordova 
> build', 'cordova run', 'cordova plugin add', and more. Every time each of 
> those commands runs, the target platform is "prepared", which involves 
> copying all files from the [<project>/www, 
> <project>/platforms/<platform>/platform_www, <project>/merges/<platform>] to 
> the platform's target www folder, as well as copying a bunch of icons and 
> splash screens to platform-specific locations.
> For the very first prepare of a platform, all that file copying is necessary. 
> But most of the time after that most of the files being copied have not 
> changed and therefore don't really need to be copied again. So the typical 
> developer inner loop (edit a few source files, build and run the app, repeat) 
> is a lot slower than it could be for a Cordova project, especially one that 
> includes a significant number of source files or resources.
> Instead, Cordova should be smart enough to skip copying of files that haven't 
> changed, based on their last-modified timestamp. (But also there should still 
> be a way to force a clean/full/non-incremental build if desired.)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to