npm package: @pets-space/dev-tools
Description: Dev tools
Latest version: 1.0.2

# Dev Tools

## Installation

`npm install @pets-space/dev-tools --save-dev`

## Commands and usage

#### `print-version`
Print version based on package.json and git commit hash.

---

#### `validate-branch <branch>`
Check if branch is correctly named

---

#### `validate-nx-tags`
Check if all nx tags are valid.

---

#### `validate-commit <branch>`
Check if commit messages are correctly formatted.

---

#### `prettier-check <files>`
Check with prettier if files are correctly formatted.

---

#### `build-affected [options]`
Build affected apps.

Options:  
`--base <base>` - base commit or branch for finding affected apps

`--buildFlags <buildFlags>` - build flags eg. `--aot --build-optimizer=false` (default: "--aot --build-optimizer=false")

`--head <head>` - head commit or branch for finding affected apps

`--nodeFlags <nodeFlags>` - nodejs flags eg. `--max-old-space-size=6144` (default: "")

`--npmCommands <npmFlags>` - additional npm commands to run before build separated with `&&` eg. `build:ci:prepare && build:ci:notify` (default: "")

---

#### `validate-change-size [options]`
Check if merge request isn't too large.

Options:  
`--base <base>` - base commit or branch for diff

`--head <head>` - head commit or branch for diff


## Configuration

Create `dev.json5` file in repository with the following content:

```json5
{
  branch: {
    // types of branches
    types: ['feature', 'bugfix', 'hotfix', 'release', 'refactor'],
    // RegExp that overrides "types" (types are ignored)
    pattern: '(.*)'
  },
  change: {
    // max number of added lines in change request, default: -1
    maxAdditions: -1,
    // max number of deleted lines in change request, default: -1
    maxDeletions: -1,
    // max number of edited files in change request, default: -1
    maxFiles: -1
  },
  // all commitlint rules are supported
  // https://github.com/conventional-changelog/commitlint/blob/master/docs/reference-rules.md
  commitlint: {
    'body-leading-blank': [1, 'always'],
    'footer-leading-blank': [1, 'always'],
    'header-max-length': [2, 'always', 72],
    'body-max-line-length': [2, 'always', 72],
    'footer-max-line-length': [2, 'always', 72],
    'scope-case': [2, 'always', 'lower-case'],
    'subject-case': [
      2,
      'never',
      ['sentence-case', 'start-case', 'pascal-case', 'upper-case']
    ],
    'subject-empty': [2, 'never'],
    'subject-full-stop': [2, 'never', '.'],
    'type-case': [2, 'always', 'lower-case'],
    'type-empty': [2, 'never'],
    'type-enum': [
      2,
      'always',
      [
        'build',
        'ci',
        'docs',
        'feat',
        'fix',
        'perf',
        'refactor',
        'release',
        'style',
        'test'
      ]
    ],
    'scope-enum': [2, 'always', ['test', 'report', 'document']]
  },
  prettier: {
    // extensions to check with prettier
    extensionsToCheck: ['.json', '.ts', '.js', '.html', '.css', '.scss']
  },
  nxTagsValidator: {
    // ignore default tags
    ignore: [
      'type:application',
      'type:util',
      'type:ui',
      'type:data-access',
      'type:resource',
      'type:feature',
      'scope:shared'
    ]
  }
}
```