packages/angular-example-app Contains a simple demo angular app showcasing the various modules. It is by no means a 'best practices' demo app - use the Angular seed for that. It contains Angular material, a simple @ngrx/store with effects, and the seed loopback sdk.
Lerna is used for publishing all the packages as separate npm packages in nexus.
If you want to run lerna locally npm i -g lerna.
Most common learna tasks are in the package file and lerna is a dependency so you can usually substitute lerna commands for npm run commands if you do not want to install lerna locally e.g. npm run bootstrap = lerna bootstrap, npm test = lerna run test etc.
- Grab the npm module seed as a starting point (make a shallow clone and get it setup for your own module - e.g. add dependencies you need)
- Setup the module's package file to be appropriate for your new module (change the
'name'to'@nextfaze/{my-dank-package}'and update description) - Checkout this repo and add your new module to the
packagesfolder under a folder name for the modulepackages/{my-dank-package}. - Create a new branch and commit (
feature/{my-dank-package}), push to gitlab. - Work on your module until it is ready to become part of the NextFaze toolkit - at which point, make a PR into master
- Any changes you make should be on a new feature/fix branch, preferably tagged with the module name and a gitlab issue. Commits should also reference a gitlab issue so we know who is working on what
- Don't worry about
CHANGELOG.md- Lerna will take care of that for you as long as you write good commit messages (see the Commits section) - Keep your README up to date and document everything.
- I recommend getting the Document This visual studio code extension to make generating your jsdoc a lot easier
- Don't write a book in the docs - noone is going to read it. Just a simple one-liner about what the thing does is enough. This file is an exception - those who can't teach.
- Don't use
anyin your type annotations unless you really mean it. TypeScript offers more than just decorators - it lets other devs know how to use your tools. - Look at
@nextfaze/core-toolsfor an example of what is expected in terms of docs and test coverage.
- Be very wary of what you commit and what is in
.npmignore..gitignoreand.npmignoreare mutually exclusive - having a.npmignorewill make npm ignore your.gitignore - Be conscious of what is a dev and what is a regular dependency. Anything that is a dependency will be installed as a dependency of modules that depend on you. Don't make other developers take on your needless dependencies.
- Don't re-invent the wheel. Feel free to depend on other tools in the
@nextfazetoolkit
Lerna boot strap will install all dependencies of all packages and setup symlinks for dependencies within the repo
npm run bootstrap:hoist or lerna bootstrap --hoist
The --hoist flag ensures that all the shared dependencies are brought to the root application level. This is particularly important for Angular's dependency injection.
Run npm run serve:angular in the root or cd into packages/angular-example-app and run npm start
Please read:
https://conventionalcommits.org/
https://chris.beams.io/posts/git-commit/
Lerna uses conventional commits to determine the package number. It will be a patch unless you include feat: or BREAKING CHANGE: in front of one of the commit messages.
<message>(a normal ommit message) will publish a patch version (0.0.x)feat: <message>will publish a minor version (0.x.0)BREAKING CHANGE: <message>will publish a major bersion (x.0.0)
Please be aware that ther may be many client projects that use your module so pay close attention to what is a fix, a feature and a breaking change.
In general:
- Minor bug fix: patch
- New code added: minor
- Removed code or refactored: major
- If you're going to commit
'testing blah blahon your new feature branch - make sure you squash it out before making a PR
