{"id":13601982,"url":"https://github.com/emyann/matron","last_synced_at":"2025-06-24T07:38:02.762Z","repository":{"id":34038216,"uuid":"163109046","full_name":"emyann/matron","owner":"emyann","description":"A Domain Specific Language à-la Dockerfile with a CLI to scaffold your projects.","archived":false,"fork":false,"pushed_at":"2025-02-18T05:47:27.000Z","size":2308,"stargazers_count":11,"open_issues_count":28,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-14T10:11:38.385Z","etag":null,"topics":["angular","cli","command-line","es6","jasmine","javascript","jest","karma","nodejs","npm","parcel","react","schematics","typescript","webpack"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emyann.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-12-25T20:15:01.000Z","updated_at":"2024-01-16T12:41:10.000Z","dependencies_parsed_at":"2025-02-18T06:37:46.303Z","dependency_job_id":null,"html_url":"https://github.com/emyann/matron","commit_stats":null,"previous_names":[],"tags_count":67,"template":false,"template_full_name":null,"purl":"pkg:github/emyann/matron","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emyann%2Fmatron","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emyann%2Fmatron/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emyann%2Fmatron/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emyann%2Fmatron/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emyann","download_url":"https://codeload.github.com/emyann/matron/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emyann%2Fmatron/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261630700,"owners_count":23187222,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","cli","command-line","es6","jasmine","javascript","jest","karma","nodejs","npm","parcel","react","schematics","typescript","webpack"],"created_at":"2024-08-01T18:01:11.095Z","updated_at":"2025-06-24T07:38:02.725Z","avatar_url":"https://github.com/emyann.png","language":"TypeScript","readme":"# Matron\n\n\u003e A Domain Specific Language à-la Dockerfile with a CLI to scaffold your projects.\n\n[![npm](https://img.shields.io/npm/v/matron.svg?style=for-the-badge)](https://www.npmjs.com/package/matron) [![npm](https://img.shields.io/npm/dy/matron.svg?style=for-the-badge)](https://npm-stat.com/charts.html?package=matron) [![CircleCI (all branches)](https://img.shields.io/circleci/project/github/emyann/matron/master.svg?style=for-the-badge)](https://circleci.com/gh/emyann/matron)\n\n- [Matron](#matron)\n  - [Installation](#installation)\n  - [Quick start](#quick-start)\n  - [Commands](#commands)\n    - [`matron create`](#matron-create)\n  - [Matron File](#matron-file)\n    - [Schema](#schema)\n    - [Environments variables](#environments-variables)\n      - [Dynamic variables](#dynamic-variables)\n      - [Dotenv variables](#dotenv-variables)\n\n## Installation\n\n**Using `npx`**\n\nIf you don't prefer to install the CLI, you can use it through `npx` this way\n\n```sh\nnpx matron --help\n```\n\n**Install with `npm`**\n\nYou can also install the CLI globally\n\n```sh\nnpm i -g matron\nmatron --help\n```\n\n## Quick start\n\nThe minimal setup required to use matron and scaffold a new project is a **`matron.yml`** file.\n\nLet's start with the example below:\n\n📄 **`matron.yml`**\n\n```yml\njobs:\n  create-folder:\n    name: Create project folder\n    steps:\n      - RUN: npx mkdirp ${PROJECT_PATH}\n  init-project:\n    name: Initialize package.json\n    steps:\n      - WORKDIR: ${PROJECT_PATH}\n      - RUN: npm init -y\n  add-typescript:\n    name: Add TypeScript\n    steps:\n      - RUN: yarn add -D typescript\n```\n\n▶️ **matron command**\n\n```sh\nmatron create --matron-file=./matron.yml --project my-project\n```\n\nLet's break down each steps:\n\n1. **Create project folder**\n\n   1. `RUN: npx mkdirp ${PROJECT_PATH}`: With the `RUN` command you can execute any command that is possible to execute on your shell.\n   2. Here we are using [`mkdirp`](https://www.npmjs.com/package/mkdirp) to create a folder at the path `my-project`.\n   3. `${PROJECT_PATH}` is a default environment variable provided when you specify the option `--project`.\n\n2. **Initialize package.json**\n   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`.\n   2. `RUN: npm init -y`: This will create a minimal `package.json` file.\n3. **Add TypeScript**\n   1. `RUN: yarn add -D typescript`: Add TypeScript as dev dependencies.\n\nWhen executed, this will result in the following file tree:\n\n```sh\nmy-project\n├── node_modules\n├── package.json\n└── yarn.lock\n```\n\n💡**You can learn more about the available commands [here](#commands).**\n\n💡**You can learn more about matron file schema [here](#matron-file).**\n\n\n\n## Commands\n\n### `matron create`\n\n\u003e Create a project using a matron file\n\n```sh\nmatron create [--matron-file] [--project] [--template] [--env-folder]\n```\n\n**Options**\n\nName              | Alias | Description\n------------------|-------|----------------------------------------------\n**--matron-file** | -f    | Matron file path.\n**--project**     | -p    | Name or Path of the project to create.\n**--template**    | -t    | Folder containing at least a matron.yml file.\n**--env-folder**  |       | .env files folder.\n**--help**        |       | Show help\n\n\n\n**Examples**\n\n```sh\n# Creates a project at ./my-project using ./matron.yml file\nmatron create --matron-file=./matron.yml --project my-project\n\n# Creates a project at path/to/ts-project using a template folder containing a matron.yml file and/or a .env file\nmatron create --template ./matron-templates/typescript --project path/to/ts-project\n```\n\n## Matron File\n\n### Schema\n\n### Environments variables\n\n#### Dynamic variables\n\n#### Dotenv variables\n\n","funding_links":[],"categories":["cli"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femyann%2Fmatron","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femyann%2Fmatron","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femyann%2Fmatron/lists"}