Browsersync is free software that features:
This add-on allows you to run Browsersync through the DDEV web service.
To install this add-on, run:
ddev add-on get ddev/ddev-browsersync
ddev restart
After installation, make sure to commit the .ddev
directory to version control.
Command | Description |
---|---|
ddev browsersync |
Start the watcher |
ddev launch :3000 |
Launch the Browsersync page |
Examples:
$ ddev browsersync
Proxying Browsersync on https://mysite.ddev.site:3000
[Browsersync] Proxying: http://localhost
[Browsersync] Watching files...
$ ddev launch :3000
# The site should briefly display "Browsersync: connect"
# in the top right corner, confirming it is connect to the server.
You can use DDEV’s post-start
hook to start the watcher server and launch the page when DDEV starts.
cat <<'EOF' > .ddev/config.browsersync-extras.yaml
hooks:
post-start:
- exec-host: bash -c "ddev browsersync &"
- exec-host: ddev launch :3000
EOF
ddev restart
.ddev/web-build/Dockerfile.ddev-browsersync
, which installs Browsersync using npm.browser-sync.js
to define the operation of the base setup..ddev/docker-compose.browsersync.yaml
, which exposes and routes the ports necessary.ddev browsersync
shell command, which lets you easily start Browsersync when you want it.For WordPress projects, this add-on also:
wp-config-ddev-browser.php
file which modifies the WP_HOME and WP_SITEURL values to work with Browsersync.wp-config-ddev.php
file to include the wp-config-ddev-browser.php
file.ddev-browsersync
works out of the box for many project types.
However, you may want to edit the .ddev/browser-sync.js
file to specify exactly what files and directories
should be watched. Limiting watched files may reduce hard disk and CPU loads.
Demo: https://github.com/tyler36/browsersync-demo
webpack.mix.js
// Use the HOSTNAME provided by DDEV
let url = process.env.DDEV_HOSTNAME;
mix.js('resources/js/app.js', 'public/js')
.postCss('resources/css/app.css', 'public/css', [
//
])
.browserSync({
proxy: "localhost",
host: url,
open: false,
ui: false
});
ddev exec npm run watch
...
[Browsersync] Proxying: http://localhost:3000
[Browsersync] Access URLs:
---------------------------------------------------
Local: http://localhost:3000
External: http://browsersync-demo.ddev.site:3000
---------------------------------------------------
https://browsersync-demo.ddev.site:3000
The changes this add-on makes to the wp-config-ddev.php
file during installation can be seen below.
The wp-config-ddev-browserync.php
file is included before the /** WP_HOME URL */
comment.
Before:
/** WP_HOME URL */
defined( 'WP_HOME' ) || define( 'WP_HOME', 'https://projectname.ddev.site' );
/** WP_SITEURL location */
defined( 'WP_SITEURL' ) || define( 'WP_SITEURL', WP_HOME . '/' );
After:
/** Include WP_HOME and WP_SITEURL settings required for Browsersync. */
if ( ( file_exists( __DIR__ . '/wp-config-ddev-browsersync.php' ) ) ) {
include __DIR__ . '/wp-config-ddev-browsersync.php';
}
/** WP_HOME URL */
defined( 'WP_HOME' ) || define( 'WP_HOME', 'https://projectname.ddev.site' );
/** WP_SITEURL location */
defined( 'WP_SITEURL' ) || define( 'WP_SITEURL', WP_HOME . '/' );
There are many other options to integrate Browsersync into your project, including:
Please see Browsersync documentation for more details.
This error usually occurs when the watcher server is not running.
Run ddev browsersync
to start the server.
Solution: The base URL (base
in the TYPO3 site’s config.yaml
(like config/sites/main/config.yaml
should specify http
even though the frontend is configured for https
. This can also be solved by commenting out the default base
line.
base: http://examplehost.ddev.site/
:bulb: This add-on moves to a per-project command approach in v2.5.0+. You can safely delete the global
~/.ddev/commands/web/browsersync
once you’re on v2.5.0 or higher.
If you run ddev browsersync
from a local project and get Error: unknown command "browsersync" for "ddev"
, please reinstall the add-on.
This error means the watcher is unable to track all the files it is tasked with watching. You either have to decrease the number of files you’re watching or increase the file watcher limit.
browser-sync.js
: files: [...]
sectionignore: []
sectioncolima ssh
and sudo sysctl fs.inotify.max_user_watches
to see how many watches you have. To increase it, use something like sudo sysctl -w fs.inotify.max_user_watches=2048576
. Unfortunately, this has to be done on every Colima restart.docker run -it --privileged --pid=host justincormack/nsenter1
and sysctl -w fs.inotify.max_user_watches=1048576
. Unfortunately, this has to be done again on every Docker restart.On Docker Desktop for Windows, add or edit ~/.wslconfig
with these contents:
[wsl2]
kernelCommandLine = "fs.inotify.max_user_watches=1048576"
fs.inotify.max_user_watches
on the host in /etc/sysctl.d/local.conf
or elsewhere.PRs for install steps for specific frameworks are welcome.
Contributed and maintained by @tyler36