matron

A Domain Specific Language à-la Dockerfile with a CLI to scaffold your projects.

Stars
11

Matron

A Domain Specific Language à-la Dockerfile with a CLI to scaffold your projects.

Installation

Using npx

If you don't prefer to install the CLI, you can use it through npx this way

npx matron --help

Install with npm

You can also install the CLI globally

npm i -g matron
matron --help

Quick start

The minimal setup required to use matron and scaffold a new project is a matron.yml file.

Let's start with the example below:

📄 matron.yml

jobs:
  create-folder:
    name: Create project folder
    steps:
      - RUN: npx mkdirp ${PROJECT_PATH}
  init-project:
    name: Initialize package.json
    steps:
      - WORKDIR: ${PROJECT_PATH}
      - RUN: npm init -y
  add-typescript:
    name: Add TypeScript
    steps:
      - RUN: yarn add -D typescript

▶️ matron command

matron create --matron-file=./matron.yml --project my-project

Let's break down each steps:

  1. Create project folder

    1. RUN: npx mkdirp ${PROJECT_PATH}: With the RUN command you can execute any command that is possible to execute on your shell.
    2. Here we are using mkdirp to create a folder at the path my-project.
    3. ${PROJECT_PATH} is a default environment variable provided when you specify the option --project.
  2. Initialize package.json

    1. WORKDIR: ${PROJECT_PATH}: With the WORKDIR command, all the subsequent RUN commands will be executed in the specified path, in this case ${PROJECT_PATH} equals my-project.
    2. RUN: npm init -y: This will create a minimal package.json file.
  3. Add TypeScript

    1. RUN: yarn add -D typescript: Add TypeScript as dev dependencies.

When executed, this will result in the following file tree:

my-project
├── node_modules
├── package.json
└── yarn.lock

💡You can learn more about the available commands here.

💡You can learn more about matron file schema here.

Commands

matron create

Create a project using a matron file

matron create [--matron-file] [--project] [--template] [--env-folder]

Options

Name Alias Description
--matron-file -f Matron file path.
--project -p Name or Path of the project to create.
--template -t Folder containing at least a matron.yml file.
--env-folder .env files folder.
--help Show help

Examples

# Creates a project at ./my-project using ./matron.yml file
matron create --matron-file=./matron.yml --project my-project

# Creates a project at path/to/ts-project using a template folder containing a matron.yml file and/or a .env file
matron create --template ./matron-templates/typescript --project path/to/ts-project

Matron File

Schema

Environments variables

Dynamic variables

Dotenv variables

Badges
Extracted from project README's
npm npm CircleCI (all branches)
Related Projects