standard-monorepo
Goal
The goal is to create a library that will help you and your team manage js monorepos. We assume that you run github flow with rebase enabled and provide everything available in the CLI programatically.
standard-monorepo should be all you need to run a js monorepo effectively, no need to setup commitlint, fiddle with lerna and optimise CI environments.
Roadmap v1
Usage
$ npm install -g standard-monorepo
$ standard-monorepo COMMAND
running command...
$ standard-monorepo (-v|--version|version)
standard-monorepo/0.8.0 linux-x64 node-v12.22.11
$ standard-monorepo --help [COMMAND]
USAGE
$ standard-monorepo COMMAND
...
Commands
standard-monorepo cache-key
USAGE
$ standard-monorepo cache-key
OPTIONS
-h, --help show CLI help
--cwd use the context from where the command was run to determine root of the monorepo
--github print github actions output
EXAMPLES
$ standard-monorepo cache-key # 93ead503b3bc9b08c2e07da10ef34162
$ standard-monorepo cache-key --cwd # 93ead503b3bc9b08c2e07da10ef34162
$ standard-monorepo cache-key --github # ::set-output name=cacheKey::{env.PREFIX}-93ead503b3bc9b08c2e07da10ef34162
- name: Get nodemodules cache key
id: cache-key
shell: bash
run: npx standard-monorepo cache-key
env:
PREFIX: ubuntu-latest-node-14.16.0
- name: Cache node modules
id: cache-node-modules
uses: actions/cache@v2
env:
cache-name: cache-node-modules
with:
path: |
node_modules
**/node_modules
key: steps.cache-key.outputs.cacheKey
restore-keys: steps.cache-key.outputs.cacheKey
See code: src/commands/cache-key.ts
standard-monorepo circular-deps
USAGE
$ standard-monorepo circular-deps
OPTIONS
-h, --help show CLI help
--max=max maximum allowed individual circular dependencies
--max-total-paths=max-total-paths maximum allowed circular dependencies paths
EXAMPLES
$ standard-monorepo circular-deps
$ standard-monorepo circular-deps --max=5 --max-total-paths=10 # default is 0 for both
See code: src/commands/circular-deps.ts
standard-monorepo commit [COMMIT]
USAGE
$ standard-monorepo commit [COMMIT]
ARGUMENTS
COMMIT The commit message
OPTIONS
-h, --help show CLI help
-s, --scope should include scope in the commit message
EXAMPLES
$ standard-monorepo commit # this will create a prompt like commitizen
$ standard-monorepo commit --scope # this will create a prompt like commitizen
$ standard-monorepo commit "feat: did things"
$ standard-monorepo commit "feat!: did things"
$ standard-monorepo commit "feat(ABC-123): did things" --scope
$ standard-monorepo commit "feat!(ABC-123): did things" --scope
"husky": {
"hooks": {
"commit-msg": "standard-monorepo commit $HUSKY_GIT_PARAMS"
}
}
See code: src/commands/commit.ts
standard-monorepo help [COMMAND]
USAGE
$ standard-monorepo help [COMMAND]
ARGUMENTS
COMMAND command to show help for
OPTIONS
--all see all commands in CLI
See code: @oclif/plugin-help
standard-monorepo list
USAGE
$ standard-monorepo list
OPTIONS
-h, --help show CLI help
--filter=filter glob to filter packages
--nodes list a representation of the dependency graph
--only=only [default: name,version,private,location] fields to return for each package
--since=since list all packages that have changed since a git ref
EXAMPLES
$ standard-monorepo list
$ standard-monorepo list >> list.json
$ standard-monorepo list --only="name,version"
[
{
"name": "a",
"version": "1.0.0"
},
{
"name": "b",
"version": "1.0.0"
},
{
"name": "c",
"version": "1.0.0"
}
]
$ standard-monorepo list
--only="name,version,private,location,dependencies,devDependencies,peerDependencies,optionalDependencies"
$ standard-monorepo list --only="name" --filter="foo"
$ standard-monorepo list --nodes # Shows all packages and their dependencies in an indexed table
$ standard-monorepo list --since=gitsha --only=name,version
$ standard-monorepo list --since=$(git merge-base main HEAD)
See code: src/commands/list.ts