Cordova Browser-Sync Plugin
Integrating BrowserSync into your Cordova workflow.
- Watch files in the
wwwfolder and automatically reload HTML and CSS in all connected devices
- Use BrowserSync's dashboard to control devices and reload them.
- Synchronize scrolls, clicks and form inputs across multiple devices.
- Supports real devices and emulators for iOS and Android platforms
Here is a blog post explaining the plugin and its internals.
There are three ways to use the code in this plugin. Ensure that you have added the
unsafe-inline CSP policies to your
default-src section of the CSP meta tag (
<meta content=...>) in index.html file.
Note that a
-- --live-reloadmay need to be passed to
The presence of this
--live-reload flag triggers the live reload workflow. Without this flag, the project remains unchanged. This way, the plugin does not have to be removed before packaging it for final deployment.
As a Cordova plugin (easiest)
This simplest way to integrate this in your Cordova workflow is to add it as a plugin
cordova plugin add cordova-plugin-browsersync
and then run run the cordova with
cordova run -- --live-reload.
If you ran into the error like below when you executed
"cordova plugin add cordova-plugin-browsersync" command,
Failed to install 'cordova-plugin-browsersync': Error: Cannot find module 'npm'
Please try to upgrade
npm command version which is your system global installed with following command.
npm install -g npm
I have not confirmed anything, but this error can be caused by a version of the
npm module that is mismatched between globally installed and locally installed on the project.
As a Cordova project hook
Clone this repo and run
npm run createHook to get a
after_prepare.js. Add this file as an
after_prepare hook to your config.xml. For example:
<hook type="after_prepare" src="scripts/after_prepare.js" />
Integrate into your workflow
You can also
require('cordova-plugin-browsersync') in your node module and use the
changeHost function and
browserSyncServer directly in your existing workflow.
In many cases other hooks may copy over JS, CSS or image assets into folders like
www\lib, typically from locations like
bower_components. These hooks may run at
after_prepare and hence should be ignored in the live reload workflow. To achieve this, run the command as
cordova run -- --live-reload --ignore=lib/**/*.*
--ignore commands takes an anymatch compatible destination relative to the
Setting custom hostname
Sometimes, depending on your network, your OS will report multiple external IP addresses. If this happens, by default browsersync just picks the first one and hopes for the best.
To override this behaviour and manually select which host you want to use for the external interface, use the
--host option, for example:
cordova run -- --live-reload --host=192.168.1.1
Setting custom port
If you need to forward ports from your local computer to the device because the device is not in the same network as your device then you may getting an error or red circle.
If this happens the problem could be the
3000 port. Then you can try another one for example
8090 which should work then.
cordova run -- --live-reload --port=8090
Setting custom index file
If you do not have "index.html" in your
content node then you need to set this option to the value.
Please use the
cordova run -- --live-reload --index=content.html
If you need https you can enable it with this option.
You can use
--https for example.
cordova run -- --live-reload --https