Synopsis

    cordova-cli plugin <command> [options]

Manage project plugins

    add <plugin-spec> [...] ............ Add specified plugins
        --searchpath <directory> ....... When looking up plugins by ID, look in this directory and
                                         each of its subdirectories before hitting the registry.
                                         Multiple search paths can be specified.

        --noregistry ................... Don't search the registry for plugins

        --link ......................... When installing from a local path, creates a symbolic link 
                                         instead of copying files. The extent to which files are linked
                                         varies by platform. Useful for plugin development.
        --save ......................... Save the information for specified plugin into config.xml
        --shrinkwrap ................... Used together with --save, saves the 
                                         installed version numbers to config.xml
        --browserify ................... Compile plugin JS at build time using 
                                         browserify instead of runtime.

        --force ........................ Forces copying source files from the plugin even if the
                                         same file already exists in the target directory.

        --fetch ........................ Fetches the plugin into the project's
                                         node_modules directory. Uses
                                         `npm install` to do the fetching

    remove <pluginid>|<name> [...] ..... Remove plugins with the given IDs/name.
        --save ......................... Remove the information for specified plugin from config.xml

        --fetch ........................ Removes the plugin from the project's
                                         node_modules directory. Uses
                                         `npm uninstall` under the hood.


    list .............................. List currently installed plugins
    search [<keyword>] [...] .......... Search http://plugins.cordova.io for plugins matching the keywords
    
Syntax
    <plugin-spec> : <pluginID>[@<version>]|<directory>|<url>[#<commit-ish>][:subdir]

    <plugin> .......................... Plugin id (id of plugin in npm registry or --searchPath)
    <version> ......................... Major.minor.patch version specifier using semver
    <directory> ....................... Directory containing plugin.xml
    <url> ............................. Url to a git repository containing a plugin.xml
    <commit-ish> ...................... Commit/tag/branch reference. If none is specified, 'master' is used
    <subdir> .......................... Sub-directory to find plugin.xml for the specified plugin.
    
Aliases
    plugins -> plugin
    rm -> remove
    ls -> list

Examples
    cordova-cli plugin add cordova-plugin-camera cordova-plugin-file --save --searchpath ~/plugins
    cordova-cli plugin add cordova-plugin-camera@^2.0.0 --save
    cordova-cli plugin add https://github.com/myfork/cordova-plugin-camera.git#2.1.0 --save
    cordova-cli plugin add ../cordova-plugin-camera --save
    cordova-cli plugin add ../cordova-plugin-camera.tgz --save
    cordova-cli plugin rm camera --save
    cordova-cli plugin ls
