Synopsis

    cordova-cli plugin <command> [options]

Manage project plugins

    add <pluginid>|<directory>|<giturl> [...] ..... add specified plugins
                                                    pluginid will be matched in --searchpath / registry
                                                    directory is a directory containing a plugin
                                                    giturl is a git repo containing a plugin

        [--searchpath <directory>] ................ when looking up plugins by ID, look in this directory and
                                                    each of its subdirectories for the plugin before hitting the registry.
                                                    Multiple search paths can be used by either specifying the flag multiple
                                                    times, or by separating paths with a delimiter (: on 'nix, ; on Windows).

        [--noregistry] ............................ don't search the registry for plugins

    remove <pluginid> [...] ....................... remove plugins with the given IDs

    list .......................................... list currently installed plugins
    search [<keyword>] [...] ...................... search the plugin registry for plugins matching the keywords

aliases:
    plugins -> plugin
    rm -> remove
    ls -> list


Experimental Flags

    --browserify .......................... Plugins javascript gets loaded at build time instead of runtime using browserify.
                                            Replaces cordovajs file with one that includes the JS of the installed plugins.
