Honeybadger for JavaScript
Welcome! This is the monorepo which holds all Honeybadger packages for JavaScript. You can refer to the README of each package for more information and instructions:
- @honeybadger-io/core
The core package that integrates with Honeybadger API - @honeybadger-io/js
SDK for browser, nodejs and AWS Lambda - @honeybadger-io/webpack
Webpack plugin to upload source maps to Honeybadger - @honeybadger-io/vue
SDK for vue.js integration - @honeybadger-io/react
SDK for React integration - @honeybadger-io/nextjs
SDK for Next.js integration - @honeybadger-io/gatsby-plugin-honeybadger
Gatsby plugin - @honeybadger-io/react-native
SDK for React Native integration - @honeybadger-io/rollup-plugin
Rollup/Vite plugin to upload source maps to Honeybadger
Documentation and Support
For comprehensive documentation and support, check out our documentation site.
Changelog
-
CHANGELOG.md is updated when a new version is released (
npm run release
). The rootCHANGELOG.md
has a collective changelog from changes in all the packages of the monorepo. Each package also has its ownCHANGELOG.md
with changes related only to itself. -
Conventional Commits are enforced with a Git hook (via husky + commitlint) in order to automate changelog generation.
Contributing
- Fork the repo.
- Create a topic branch
git checkout -b my_branch
- Commit your changes
git commit -am "chore: boom"
- Push to your branch
git push origin my_branch
- Send a pull request
Development
We use Lerna to manage the monorepo. It helps us:
- link between packages,
- generate changelogs and bump versions (based on conventional commits) and
- publish to NPM
- Run
npm install
from the monorepo root. - Run
npm test
from the monorepo root to run unit tests for all packages.
Lerna Tips
- Always install from the root, i.e.
npm install
only from the root folder, otherwise you may get unexpected issues with the linked packages. - Use
lerna add my-pkg --scope="@honeybadger-io/js"
to addmy-pkg
in the@honeybadger-io/js
project. Or you can manually add to the target project'spackage.json
file. You still need to runnpm install
from the root. - Use
lerna run
to execute commands for all projects. If the command is not found it will not be executed. You can filter the packages using--scope
. For example,lerna run test
will executenpm run test
to all packages that have this script available.
For more info, you can read the docs.
Troubleshooting TypeScript
- Not seeing changes when working in
.ts
files? Make sure that you rebuild every time you make a change. Or enable "compile on save" with your IDE - WebStorm(Jetbrains) / VS Code. - If you are getting errors with Typescript, make sure that you do
npm run build
. It's a prerequisite for Typescript Project References.
Releasing
Packages in the monorepo are released in independent mode, meaning that Lerna will decide which packages to release and what version bump to apply based on the commits since the last release.
Releasing is done using Github actions, which run npm run release
. This command calls lerna publish
, which does the following:
- generates changelog based on the commit messages (see Changelog above)
npm version
npm publish
Note: some packages may have a postpublish
script, for example @honeybadger-io/js
(found in packages/js
) has a script to also publish to our js.honeybadger.io CDN (hosted on AWS via S3/CloudFront).
Release Automation
The repository automatically releases new packages every week using the Publish New Release - Scheduled workflow (lerna-scheduled-publish.yml
).
You can manually trigger a new release using the Publish New Release workflow (lerna-publish.yml
).
Note: only users with write permissions can trigger this workflow (i.e. Collaborators).
Available Commands
npm run release
- Calculates the next version, commits and publishes to NPM (and to our CDN). This command is executed from the Publish New Release workflow.
License
This Honeybadger repository and published packages are MIT licensed. See the MIT-LICENSE file in this repository for details.