#Contributing to Browsersync
We'd love for you to contribute to Browsersync and help make it even better than it is today! Here are the guidelines we'd like you to follow:
- Question or Problem?
- Issues and Bugs
- Tips for a creating a great issue report
- Feature Requests
- Pull Requests
- Coding Rules
- Thank you
If you have questions about how to use Browsersync, or about your particular setup, please ask on Stack Overflow. We're trying to keep the Issues thread for actual bugs with code & implementation.
On that note, if you think you have found a bug in Browsersync, please report it via Github Issues.
Whilst we do try to look at each and every issue as soon as possible, there are certain aspects about your report that will determine how quickly/deeply we'll delve into it. A great issue will contain at least the following:
- Operating System + Version
- Use case for Browsersync - are you using the built-in server, proxying your own server, or just using the snippet mode?
- Example configuration - show us your full
gulpfile.js
,Gruntfile.js
,bs-config.js
or any other code related to how you're using Browsersync. If we have to respond to your very first issue report with "please provide information about how you're using Browsersync" then it's very likely to fall to the bottom of the heap. Help us out by providing as much detail as possible! - Provide a reduced test case. "Browsersync is not working with my app" is far less helpful than "Here's a example project showing the problem".
An example project might contain a single
index.html
file with some JS/CSS from CDNs & a short description of the issue. If we can just pull a repo/gist and see the problem for ourselves, your issue will jump straight to the top of the stack. - Screencast or GIF - not always appropriate, but can be very helpful where possible. (non-issue related gifs are always welcome, we'll often respond with something from giphy :p)
You can request a new feature by submitting an issue to our Github Issues page. Prefix the title of your issue with "Feature Request:".
Head over to the Browsersync Website Repo & submit issues there.
Pull requests should be branched off the main Master branch. (There's no guarantee that what lives on the develop branch will ever make it back to master, I do a lot of experimentation)
To ensure consistency throughout the source code, keep these rules in mind as you are working:
- All features or bug fixes must be tested by one or more specs.
- Don't be put off by this, I'm more than happy to help you implement tests - so don't be shy! I'd much rather spend time helping you to provide tests than risk losing you as a contributor :)
- Follow the code style (Builds will fail if you don't, check at any time with
npm test
). Also, this project has a .editorconfig file to help with code style; go to EditorConfig.org and download the plugin for your IDE. - Don't introduce any extra 3rd party libraries unless you're creating a brand new feature that requires it.
- Don't fight async! Avoid promises or any other similar types of abstraction, Browsersync loves simple callbacks and events.
- Keep your code simple and readable. If I can't tell what it's doing at first glance, it's too complex.
- Improve my code. Browsersync has a lot of moving parts and I don't pretend to be skilled in any particular area. If you have particular experience though, then feel free to rip my code apart and tell me a better way to do something - I'll be extremely grateful (as will the growing number of users!).
If you contribute to Browsersync, or any other Open Source project, you're awesome! This project has been vastly improved by community input & contributions and we look forward to continuing that trend.