1.0.0 • Published 2 years ago

@elmijo/monorepo-helper v1.0.0

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

Monorepo Helpers

Build Status codecov Coverage Status

This package has some helpers to work more easily with a Monorepository.

Install

yarn

yarn add --dev @elmijo/monorepo-helpers

npm

npm i --save-dev @elmijo/monorepo-helpers

Usage

Single package repository

Project skeleton

project
| package.json
| index.ts
| README.md
|
└─packages
  |
  └─packageA
  |   package.json
  |   index.ts
  |   README.md
  |
  └─packageB
      package.json
      index.ts
      README.md

Package A

// packages/packageA/jest.config.ts
import { jestPackageConfig } from "@elmijo/monorepo-helper"

export default jestPackageConfig({ projectDir: __dirname })

Package B

// packages/packageB/jest.config.ts
import { jestPackageConfig } from "@elmijo/monorepo-helper"

export default jestPackageConfig({ projectDir: __dirname })

Project

// jest.config.ts
import { jestRootConfig } from "@elmijo/monorepo-helper"

export default jestRootConfig({ packageRepos: ["./packages"] })

Multi package repositories

Project skeleton

project
| package.json
| index.ts
| README.md
|
└─frontend
| |
| └─packageA
|     package.json
|     index.ts
|     README.md
|
└─backend
  |
  └─packageB
      package.json
      index.ts
      README.md

Package A

// packages/frontend/packageA/jest.config.ts
import { jestPackageConfig } from "@elmijo/monorepo-helper"

export default jestPackageConfig({ projectDir: __dirname })

Package B

// packages/backend/packageB/jest.config.ts
import { jestPackageConfig } from "@elmijo/monorepo-helper"

export default jestPackageConfig({ projectDir: __dirname })

Project

// jest.config.ts
import { jestRootConfig } from "@elmijo/monorepo-helper"

export default jestRootConfig({ packageRepos: ["./frontend", "./backend"] })

Custom configuration

Both functions work with a default configuration, but you can override them whenever you want. Let's use the single package repository example, you can do that:

// packages/packageA/jest.config.ts
import { Config } from "@jest/types"
import { jestPackageConfig } from "@elmijo/monorepo-helper"

export default {
  ...jestPackageConfig({ projectDir: __dirname }),
  verbose: true,
} as Config.InitialOptions

Package B

// packages/packageB/jest.config.ts
import { Config } from "@jest/types"
import { jestPackageConfig } from "@elmijo/monorepo-helper"

export default {
  ...jestPackageConfig({ projectDir: __dirname }),
  coverageThreshold: {
    global: {
      branches: 95,
      functions: 95,
      lines: 95,
      statements: 95,
    },
  },
} as Config.InitialOptions

Project

// jest.config.ts
import { Config } from "@jest/types"
import { jestRootConfig } from "@elmijo/monorepo-helper"

export default {
  ...jestRootConfig({ packageRepos: ["./packages"] })
  watchman: false
} as Config.InitialOptions

Documentation

(https://elmijo.github.io/monorepo-helper/)https://elmijo.github.io/monorepo-helper/