Git Product home page Git Product logo

composer's Introduction

composer

Single command project setup! This package automates essential tools for code style, version control, releases, and Docker.

NOTE: This package assists in setting up the following tools. You may click the links below to learn more about each tool.

IDE Development Linting & Prettify Version control Deployment
EditorConfig TypeScript ESLint@8.0.0 commitlint Docker
lint-staged Git Release It
Prettier husky

NOTE: Currently fixed ESLint version at latest v8.0.0 due to the following reasons:

  • ESLint v9 contains breaking API changes
  • The eslint-plugin-react plugin is not compatible with ESLint v9

Table of Contents

Prerequisite

In order to use this package, you project must meet the following requirements:

  • Contains a package.json file
# NPM
$ npm init

# PNPM
$ pnpm init

# Yarn
$ yarn init
$ git init

Installation

Install the package as a dev dependency:

# NPM
$ npm install -D @chore-dev/composer

# PNPM
$ pnpm add -D @chore-dev/composer

# Yarn
$ yarn add -D @chore-dev/composer

Usage

  1. Add the following script to your package.json file

You may skip this step if you are using PNPM or Yarn

{
  ...
  "scripts": {
    // ...existing scripts
    "composer": "composer"
  },
  ...
}
  1. Run the following command to start the Composer:
# NPM
$ npm run composer [<options>]

# PNPM
$ pnpm composer [<options>]
or # If you have added the script to your `package.json` file
$ pnpm run composer [<options>]

# Yarn
$ yarn composer [<options>]
or # If you have added the script to your `package.json` file
$ yarn run composer [<options>]

Options

Option Alias Description Example
--dry-run -D Run the command without making any changes
--no-backup Skip creating backup files while running composer
--preset path::string -P path::string Use a preset file and skip all questions --preset ./preset.json

Preset file

The preset file is a JSON file that contains the configuration for the Composer. The following is the structure of the preset file:

interface Preset {
  // Project environment
  env: Record<'isBrowser' | 'isNode', boolean>;
  framework: 'react' | 'vue' | 'none';
  packageManager: 'npm' | 'pnpm' | 'yarn';
  styleSheet: 'css' | 'scss' | 'none';
  withSyntaxExtension: boolean;
  // Tools
  commitLint: Record<'createConfig' | 'install' | 'integrate', boolean> | false;
  docker: Record<'addIgnores', boolean> | false;
  editorConfig: Record<'createConfig', boolean>;
  eslint: Record<'addIgnores' | 'createConfig' | 'insertScripts' | 'install', boolean> | false;
  git: Record<'addIgnores', boolean> | false;
  husky: Record<'insertScripts' | 'install', boolean> | false;
  lintStaged: Record<'createConfig' | 'install' | 'integrate', boolean> | false;
  prettier: Record<'addIgnores' | 'createConfig' | 'insertScripts' | 'install', boolean> | false;
  releaseIt: Record<'createConfig' | 'insertScripts' | 'install', boolean> | false;
  typescript: Record<'createConfig' | 'install', boolean> | false;
}

You may also copy the preset file from the Composer by running the following command:

# NPM
$ npm run composer --dry-run

# PNPM
$ pnpm composer --dry-run
or # If you have added the script to your `package.json` file
$ pnpm run composer --dry-run

# Yarn
$ yarn composer --dry-run
or # If you have added the script to your `package.json` file
$ yarn run composer --dry-run

Outputs

Composer may generate the following files according to the tools you have selected:

Click the items below to learn more about customizing them

commitlint

Docker

EditorConfig

ESLint

Git

Husky

lint-staged

Prettier

release-it

TypeScript

^ Back to top

composer's People

Contributors

issac-lezon avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.