Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

moker

Package Overview
Dependencies
Maintainers
1
Versions
98
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

moker

The moker CLI

  • 0.0.9
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
50
decreased by-19.35%
Maintainers
1
Weekly downloads
 
Created
Source

moker

npm

No more struggles setting up monorepo tooling. Kick-start monorepos and workspaces fast:

# initialize a monorepo
yarn dlx moker create my-monorepo
cd my-monorepo

# install common tools
yarn moker use prettier husky lint-staged github-actions devcontainer

# create workspaces
yarn moker add --template express server
yarn moker add --template cra client

Features

  • 👢 Kick-start a monorepo with ease
  • 🧰 Monorepo plugins to use pre-configured common tooling
  • ➕ Add workspaces on demand
  • 🧬 Workspace templates for a library, React app, API or CLI
  • ⚡ Extensible, bring your own plugins

🤓 The core plugins make some assumptions you may not agree with. If that's the case, this tool is probably not for you. The defaults used are documented below and marked with a nerd-face emoji so you should be able to get a clear picture of what to expect.

Table of contents

Getting started

Prerequisites

You will need Node v14+ and Yarn v3+ in order to use moker.

  • Install Node with nvm or using nodesource.
  • Install Yarn using these simple steps:
    corepack enable
    corepack prepare yarn@stable --activate
    

Create monorepo

Create a new monorepo:

yarn dlx moker create my-repo

This will initialize a new monorepo in the my-repo directory.

⚠️ Note that we use yarn dlx moker to create a new monorepo. Once we are inside our monorepo, we can simply use yarn moker to execute commands.

🤓 The monorepo is initiated with Yarn without Zero-Installs and in legacy nodeLinker: node-modules mode because a lot of packages are not yet compatible with PnP or require a workaround.

Use plugins

Of course you want additional tools installed at the monorepo level, add them with:

cd my-repo
yarn moker use prettier husky lint-staged

Plugins may work together. For example, lint-staged will install a pre-commit hook which formats code if prettier and husky are installed. The order in which plugins are added does not matter.

See the section available plugins for a list of options.

💡 To quickly get started with the most common plugins, use a monorepo template like so:

yarn dlx moker create --template common my-repo

Add workspace

To add a new workspace (a.k.a. monorepo package) to your monorepo, use:

yarn moker add my-workspace

Workspaces are added in a customizable subdirectory of the monorepo (the default is packages).

You can also use a workspace template, e.g.:

yarn moker add --template lib shared
yarn moker add --template express server
yarn moker add --template cra client
yarn moker add --template bandersnatch cli

See the section available templates for a list of options.

Available plugins

devcontainer monorepo

🚧 This plugin is a work in progress

This plugin sets up devcontainer configuration at the monorepo level.

github-actions monorepo

🚧 This plugin is a work in progress

This plugin sets up GitHub Actions at the monorepo level.

husky monorepo

This plugin sets up Husky at the monorepo level.

lint-staged monorepo

This plugin sets up lint-staged at the monorepo level.

If you have the prettier plugin installed, this will setup a task to format staged files using prettier --write --ignore-unknown.

If you have the husky plugin installed, this will setup a pre-commit hook to run yarn lint-staged.

prettier monorepo

This plugin sets up Prettier.

🤓 Prettier is installed with this configuration:

proseWrap: always

We only set this proseWrap override because we think markdown files should always be truncated to match whatever the printWidth setting is. This makes it so much easier to read and write markdown files!

jest workspace

This plugin sets up Jest and adds a test and watch:test script to both the workspace and the monorepo.

typescript workspace

This plugin sets up TypeScript and adds a build and watch:build script to both the workspace and the monorepo.

Available templates

common monorepo

This is the only monorepo template at this point. It simply installs these plugins in the monorepo:

  • prettier
  • husky
  • lint-staged
  • github-actions
  • devcontainer

bandersnatch workspace

Scaffolds a simple bandersnatch CLI app tool with the typescript and jest plugins.

cra workspace

Uses create-react-app to scaffold a React.js app (web client).

express workspace

Scaffolds a simple express HTTP app with the typescript and jest plugins.

lib workspace

A plain shared library template with the typescript and jest plugins.

Contributing

Contributions are very welcome!

Roadmap

  • github-actions plugin
  • devcontainer plugin
  • Add LICENSE file to monorepo
  • Support for swc/esbuild
  • A compat lib (which builds cjs and mjs targets)
  • Adapt for non-monorepo use-cases (?)
  • Blog post / tutorial
  • Docs for writing custom plugins / templates
  • Port templates
  • Support for BYO plugins/templates
  • Remove plugins

Also see TODO.md.

Development

To run the moker CLI from source, run:

yarn start

Note that you can create a new monorepo for testing purposes outside the current working directory with:

yarn start create /path/to/my-repo

Devcontainer

A devcontainer configuration is included in this repo to get started quickly.

Credits

©️ Copyright 2022 Joram van den Boezem
♻️ Licensed under the MIT license
🤔 Moker? MOnorepo KickstartER

FAQs

Package last updated on 24 Nov 2022

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc