+1 This is a cleaner workflow and should reduce some confusion.

-James Jong

On Sep 24, 2013, at 3:09 PM, Michal Mocny <mmo...@chromium.org> wrote:

> Just to add, the reason for the "if" statement in step (2) is that
> uninstall & reinstall take a lot longer than just moving a few files, which
> is the 99.9% case for most end users who aren't making modifications to
> plugins.
> 
> This way, we only do the heavy lifting if your plugin structure actually
> changed.  Doing it automatically means we no longer have to advise users
> that making edits inside plugin/ folder is useless.  Now we just advise
> them to run "prepare" after making changes to either www/ or plugins/.
> 
> This key insight was Braden's idea and I think its just an awesome change
> for workflow.
> 
> -Michal
> 
> 
> On Tue, Sep 24, 2013 at 2:58 PM, Braden Shepherdson 
> <bra...@chromium.org>wrote:
> 
>> Michal and I were discussing how to make the plugin developer experience
>> better, by having `cordova prepare` update the platform projects properly
>> when you change a plugin in place.
>> 
>> I propose the following changes:
>> 
>> 1. On plugin install, we cache the plugin.xml in $PROJECT/.cordova
>> somewhere.
>> 2. On 'cordova prepare', compare each plugin's plugin.xml against the
>> cached one.
>>    a. If they have changed, uninstall the plugin using the old plugin.xml,
>> then reinstall using the new one (and update the cached plugin.xml).
>>    b. If they are identical, copy all the native code files from the
>> plugin into the project again.
>> 
>> The idea is that you can change your plugin's native code, JS modules, or
>> assets, and after a prepare you'll be running the latest. We already have
>> cordova plugin add foo --link, but it wasn't very useful. This will make
>> plugin development a much smoother flow, without too much implementation
>> effort.
>> 
>> Checking for changes to plugin.xml lets us know that no files have been
>> added or removed, that <config-file> edits haven't changed, and so on,
>> meaning that simply copying the native code again will be sufficient.
>> 
>> What do people think? Any gotchas that I overlooked?
>> 
>> Braden
>> 

Reply via email to