Centralized CLI for JavaScript and TypeScript developer tools, with sharable and battle tested configurations. Built on and powered by Beemo.
Lumos is designed around my projects. Use at your own risk.
To contribute to Lumos, begin by cloning the repository, installing dependencies, and building initial files.
git clone git@github.com:rajzik/lumos.git && cd ./lumos
yarn install
yarn run build
Lumos uses Yarn workspaces to manage multiple packages as a monorepo, and Beemo as the configuration and management layer.
yarn run build
will build applicable packages.yarn run eslint
will run lint all source and test files.yarn run jest
will run the test suite.yarn run prettier
will format code.yarn test
will test, lint, and build.
Please report all bugs as an issue on the Lumos repository. Before filing a new issue, try to make sure your problem doesn’t already exist.
If you work for Lumos, please create an issue and start a discussion about the feature you want added to Lumos, and why.
Otherwise, we will not be accepting new features from individuals outside of Lumos.
Lumos uses conventional commits and Lerna to automatically release and publish new package versions for every commit that merges to master. To ensure versions are bumped correctly, we use the conventional-changelog-beemo preset, coupled with PR titles and squash merging to achieve this.
If your PR title does not match the specification, a DangerJS status check will fail.
We use an automatic code formatter called Prettier. Run yarn run prettier
after making any changes to the code, or setup your editor to automatically format on save.
Our linter will catch most issues that may exist in your code.
Most of the dependencies are updated automatically with dependabot.
Otherwise follow this guide: To update dependencies in Lumos, run
yarn upgrade-interactive --latest
in the root of the project. This will display an interactive
menu in which you can select dependencies to update (to the latest version) using the space bar and
arrow keys.
However, there are a few caveats and requirements to follow when updating.
- Dependencies should be updated in isolation per package (workspace), and commited to git
separately. For example, only dependencies within the
@rajzik/config-jest
package should be updated within a single commit.- This allows packages to update and version independently from each other.
- The exception to this is when a dependency is used across many packages, like Babel being used in Jest and Webpack. The preferred solution is to update all Babel dependencies first, across all packages, in the same commit. Subsequent commits would isolate Jest and Webpack separately.
- Format your commit message with the
deps
prefix, along the lines ofdeps: Update plugins to latest.
ordeps(ESLint): Update to v6.
. This message format follows the conventional-changelog-beemo spec. - Commit all dependency updates in the same branch, so they can be grouped under the same PR. Once the PR has been approved, normal merge (not a squash or rebase merge) the PR so all commits and their formatted messages are sent to master. This will trigger an auto-release with the correct version bumps.