Skip to content

honeybadger-io/honeybadger-js

Repository files navigation

Honeybadger for JavaScript

Node CI

Welcome! This monorepo contains all Honeybadger packages for JavaScript. Refer to each package's README for more information and setup instructions:

Documentation and Support

For comprehensive documentation and support, see our docs: https://docs.honeybadger.io/lib/javascript/index.html

Changelog

  • Each package's CHANGELOG.md is updated when a new version is released (npm run release).

  • Conventional Commits are enforced with a Git hook (via husky + commitlint) in order to automate changelog generation.

Contributing

  1. Fork the repo.
  2. Create a topic branch git checkout -b my_branch
  3. Commit your changes git commit -am "chore: boom"
  4. Push to your branch git push origin my_branch
  5. 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
  1. Run npm install from the monorepo root.
  2. 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 add my-pkg in the @honeybadger-io/js project. Or you can manually add to the target project's package.json file. You still need to run npm 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 execute npm run test to all packages that have this script available.

Tip

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 run 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.

Releases are performed via GitHub Actions, which run npm run release. That command calls lerna publish, which:

  • generates the changelog based on commit messages (see Changelog above)
  • runs npm version
  • runs 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 when a PR is merged on master using the Publish New Release workflow (lerna-publish.yml).

Important

NPM releases are authorized through NPM Trusted Publishing. Only one workflow can be configured as a Trusted Publisher at a time. Keep the scheduled workflow configured by default. If you need to manually trigger a different workflow, temporarily switch NPM Trusted Publishing to that workflow, and revert back to the scheduled workflow afterward.

Warning

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.