A curated drawer of project and monorepo tooling, grouped by job: managing repos, scaffolding new projects, automating scripts, publishing releases, and keeping dependencies sane.
| Resource | Why it is useful |
|---|---|
| awesome-monorepo | Curated list of monorepo tools and resources. |
| manypkg | Linter and fixer for monorepo package.json consistency. |
| syncpack | Keep dependency versions in sync across workspace packages. |
Parallel/cached runners for monorepo scripts.
| Resource | Why it is useful |
|---|---|
| lage | Cached task pipeline runner for JS monorepos. |
| ultra-runner | Fast parallel script runner with build ordering. |
| wsrun | Run a command across workspace packages with dependency ordering. |
MRM applies codemod-style tasks to bring a project's config files up to date. Presets and tasks below.
| Resource | Why it is useful |
|---|---|
| presetter | Reusable project config presets. |
| smarthead/mrm-preset | MRM preset example. |
| solid-soda/scripts | Shared scripts/config preset. |
| mrm-preset-michaeldanilov | MRM preset; includes a yaspeller spell-check task. |
| koober-sas/project-config | GitLab-hosted MRM preset (package.json). |
| adonisjs/mrm-preset | AdonisJS MRM preset. |
| tachiba/mrm-tasks | Collection of MRM tasks. |
| moonwalker/mrm-presets | MRM presets. |
| mrm-task-avats | MRM task that sets up AVA testing. |
| mrm-task-git-config-gitlab-deployments | MRM task for GitLab deployment git config. |
| commitlint-config task | MRM task pattern: clear file, add contents, install. |
| TayloredTechnology/mrm-preset | MRM task using a template directory. |
| npm/lint setup.js | Example of setting up npm scripts manually. |
| kcd-scripts | Consolidate project scripts into one shared CLI. |
| Shopify/web-configs | Preset/shared-config examples. |
Reference implementations for writing your own MRM tasks.
| Resource | Why it is useful |
|---|---|
| mrm-task-npm-aws | AWS deploy scripts task. |
| mrm-task-webpack | Webpack setup task. |
| mrm-task-typescript-vscode | TypeScript + VSCode setup task. |
| mrm-preset-thorough prettier | Prettier setup task. |
| yaspeller task | Spell-checker setup with yaspeller. |
| macaw init command | Example of creating an email template in an init command. |
Write shell-style scripts in JavaScript.
| Resource | Why it is useful |
|---|---|
| fsxx | Filesystem-focused scripting helpers. |
| zx | Google's tool for writing shell scripts in JS. |
| kit test script | Script Kit template script example. |
| Resource | Why it is useful |
|---|---|
| projen | Define and synthesize project config from code. |
| Plop | Micro-generator framework for consistent files. |
| gogen | Generator tool. |
| tabstops | Snippet/tabstop parsing example. |
| copy-template-dir | Copy a template directory with variable substitution. |
| Resource | Why it is useful |
|---|---|
| package-sync | Download/sync GitHub templates into a project. |
| npm-templates | Example of downloading templates. |
| Hygen blog templates | Hygen prompt example for new content. |
| Cypress hygen scripts | package.json hygen script example. |
| hygen-andoshin11-templates | Example of running Hygen from home-dir templates. |
Run Hygen from templates shipped inside node_modules:
"new:post": "cross-env HYGEN_TMPLS=node_modules/@64robots/nuxt-content-blog/src/_templates hygen post new",
"new:author": "cross-env HYGEN_TMPLS=node_modules/@64robots/nuxt-content-blog/src/_templates hygen author new",
"new:category": "cross-env HYGEN_TMPLS=node_modules/@64robots/nuxt-content-blog/src/_templates hygen category new"Run Hygen from templates in a home directory:
HYGEN_TMPLS=$HOME/dev/hygen-andoshin11-templates/_templates hygen| Resource | Why it is useful |
|---|---|
| release | Vercel's release notes generator. |
| auto | Automated versioning and publishing from PR labels. |
| np | Better npm publish workflow. |
| changesets | Versioning and changelogs for monorepos. |
| changesets package.json example | Changesets script wiring. |
| formik release-notes.js | Custom release notes script. |
| Resource | Why it is useful |
|---|---|
| npm-check | Interactive check for outdated/unused deps. |
| npm-check-updates | Upgrade package.json dependency ranges. |
| taze | Modern dependency updater. |
| david | Tells you when npm dependencies are out of date. |
| depcheck | Find unused dependencies. |
| unimported | Find unused files and dependencies. |
| dependency-cruiser | Validate and draw a map of dependencies. |
| sharec | Install/share config across projects (example). |
| yalc | Local package publishing for testing. |
| types-sync | Sync @types/* definitions to installed deps. |
| install-pkg | Programmatically install a package. |
| ci (install-pkg fast) | Fast clean dependency install in CI. |
| check-engines | Verify installed versions match engines. |
| npkill | Find and remove old node_modules directories. |
| nls | List scripts and why deps are installed. |
| cost-of-modules | Check the size of dependencies in use. |
| madge | Draw a module dependency graph. |
| Lerna | Monorepo dependency and publish management. |
| patch-package | Persist fixes to dependencies via patches. |
| Resource | Why it is useful |
|---|---|
| npm org-wide workflow | Example org-wide GitHub Actions workflow. |
| Resource | Why it is useful |
|---|---|
| shepherd | Run codemods across many repos at once. |
| Resource | Why it is useful |
|---|---|
| cclog-parser | Changelog parser. |
| collect-changelog | Collect changelog changes across a monorepo. |
| Resource | Why it is useful |
|---|---|
| secretlint | Lint for committed secrets; pair with a pre-commit hook. |
| Resource | Why it is useful |
|---|---|
| gittar | Download and extract git repos. |
| git-account | Switch between GitHub accounts. |
| Git-User-Switch | GUI to switch git users. |
| Resource | Why it is useful |
|---|---|
| korefile | GitHub filesystem for multi-repo updates (funding.yml updater, asocial-bookmark). |
| delete-github-branches | Bulk-delete branches. |
| github-label-setup | Set up standard GitHub labels. |
| security-alert | GitHub security alert CLI. |
| gitexporter | Export private subdirectories to public repos. |