- Exclude the 10 core-js 3.0 modules with no counterpart in the @babel/polyfill set every released bundled.js shipped (concat/splice species fixes, Array#flat, Object.fromEntries, the __defineGetter__ family, NodeList#forEach): 156.1 -> 153.2 kB (49.3 -> 48.4 kB gzip). babel rejects unknown exclude names, so a core-js rename fails the build. - terser `passes: 5`, where output stops shrinking: es5.js 7.52 -> 7.49 kB gzip. - New test: bundled.js must not install polyfills no release ever shipped (fails on the previous master build, passes on 2.14.1 and this one). - README no longer claims named imports shrink the bundle; AGENTS.md describes the tsdown build and four-artifact acceptance tests; CONTRIBUTING points at the existing lint:check script.
1.8 KiB
Contributing
We're always open to pull requests or code reviews. Everyone can become a permanent contributor. Just ping @lancedikson in the issues or on Twitter ❤️
Branches
The project runs Git-flow, where the master branch is for development and production is for production.
In a nutshell, if you are proposing a new feature that adds totally new functionality to bowser, it's better to branch from master and make a PR pointing back to master as well.
If it's a small hot-fix, an improvement to the docs, or added support for a new browser/OS/platform/etc, then it's better to branch from production and make a PR pointing back to production.
Following these simple rules will really help maintain the repo! Thanks ❤️
Adding Browser Support and Tests
See the list in test/acceptance/useragentstrings.yml with example user agents and their expected bowser object.
Whenever you add support for new browsers or notice a bug / mismatch, please update the list and check if all tests are still passing. Also, make sure to keep the list of browser aliases up-to-date in src/constants.js.
For creating aliases, keep the following guidelines in mind:
- use only lowercase letters for names
- replace special characters such as space and dashes by underscore
- whenever possible drop the word
browserfrom the original browser name - always check for possible duplicates
- aliases are supposed to also be a shorter version of the original name
Examples:
Opera Coast --> opera_coast
UC Browser --> uc
SeaMonkey --> seamonkey
Testing
If you'd like to contribute a change to bowser, modify the files in src/, and run the following (you'll need node + npm installed):
$ npm install
$ npm run build #build
$ npm test #run tests
$ npm run lint:check #check lint rules