blob: 74e127814bc2e837b0769ead2a88a5dd63600fe6 [file] [log] [blame] [view]
# For Developers
We strongly encourage you to review the project's scope described in the `README.md` file before working on new features. For large changes, consider writing a design document using [this template](https://goo.gl/YCQttR).
## Testing locally
This repository contains nested workspaces. To test all targets locally in the main workspace and in all nested workspaces run:
```
yarn test_all
```
To do a full clean run:
```
yarn clean_all
```
Other scripts allow you to test all or individual packages, e2e tests and examples. For example,
```
yarn test_packages_all
yarn test_packages typescript karma
yarn test_e2e_all
yarn test_e2e karma
yarn test_examples_all
yarn test_examples webapp
```
## Releasing
Start from a clean checkout at master/HEAD.
Note: if you are using a new clone, you'll need to configure `git-clang-format` to be able to commit the release:
1. `git config clangFormat.binary node_modules/.bin/clang-format`
1. `git config clangFormat.style file`
Check if there are any breaking changes since the last tag - if so, this will be a minor, if not it's a patch.
(This may not sound like semver, but since our major version is a zero, the rule is that minors are breaking changes and patches are new features.)
1. `yarn install`
1. Re-generate the API docs: `yarn skydoc`
1. `git add docs/` (in case new files were created)
1. `git commit -a -m 'docs: update docs for release'`
1. `npm version minor` (replace `minor` with `patch` if no breaking changes)
1. Build npm packages and publish them: `./scripts/publish_release.sh`
1. `git push upstream && git push upstream --tags`
1. (Manual for now): go to the [releases] page, edit the release with rough changelog (especially note any breaking changes!) and upload the release artifact from `rules_nodejs-[version].tar.gz`
1. Announce the release on Angular slack in `#tools-abc-discuss`
[releases]: https://github.com/bazelbuild/rules_nodejs/releases