diff --git a/.npmignore b/.npmignore index 2284623..3856a88 100644 --- a/.npmignore +++ b/.npmignore @@ -4,3 +4,4 @@ test.sh limitation.js eslint* *.sw? +*.md diff --git a/README.md b/README.md index 90bea4e..c00e2b0 100644 --- a/README.md +++ b/README.md @@ -40,6 +40,11 @@ const diagnostics_channel = require('dc-polyfill'); When a Pull Request is created the test suite runs against dozens of versions of Node.js. Notably, versions right before a change and versions right after a change, the first version of a release line, and the last version of a release line. To test locally it's recommended to use a node version management tool, such as `nvm`, to test changes with. +## Releasing + +See [RELEASING.md](RELEASING.md) for the steps to publish a new version of `dc-polyfill` to npm. + + ## License / Copyright See [LICENSE.txt](LICENSE.txt) for full details. diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 0000000..295abc0 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,45 @@ +# Releasing + +`dc-polyfill` is published to npm as [`dc-polyfill`](https://www.npmjs.com/package/dc-polyfill). Releases are currently cut manually by a maintainer with publish access to the package on npm. + +## Prerequisites + +- Push access to `main` on this repository. +- The [`gh`](https://cli.github.com/) CLI, authenticated against `DataDog/dc-polyfill`. +- Log in to the npm account with publish access to `dc-polyfill`. Check with `npm whoami`; run `npm login` if needed. If you don't have publish access, ask an existing maintainer. + +## Cutting a release + +```sh +# Make sure main is green and up to date. +git checkout main +git pull origin main + +# Bump the version. Pick patch, minor, or major per semver. +# This updates package.json, creates a commit (e.g. "0.1.11"), +# and creates a matching v0.1.11 tag locally. +npm version patch + +# Sanity-check what will be packed before publishing anything public. +npm publish --dry-run + +# Publish to npm. Do this before pushing the tag so a failed publish +# doesn't leave a release tag in the repo that points at no npm version. +npm publish + +# Push the version-bump commit and the tag. +git push origin main --follow-tags + +# Create the GitHub release with autogenerated notes. +gh release create "v$(node -p "require('./package.json').version")" --generate-notes +``` + +## Verifying the release + +```sh +# Confirm the new version is live on npm. +npm view dc-polyfill version + +# Confirm the GitHub release exists. +gh release view "v$(node -p "require('./package.json').version")" +```