Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/moltar/projen-turborepo

Projen project type for Turborepo monorepo setup.
https://github.com/moltar/projen-turborepo

monorepo projen turbo turborepo

Last synced: 3 months ago
JSON representation

Projen project type for Turborepo monorepo setup.

Awesome Lists containing this project

README

        

# ๐Ÿ“ฆ `projen-turborepo`

> [Projen](https://github.com/projen/projen) project type for [Turborepo](https://turborepo.org/) [monorepo](https://en.wikipedia.org/wiki/Monorepo) setup.

## Getting Started

To create a new project, run the following command and follow the instructions:

```sh
$> mkdir my-monorepo
$> cd my-monorepo
$> npx projen new --from projen-turborepo --projenrc-ts
๐Ÿค– Synthesizing project...
...
```

## Demo

See [`projen-turborepo-test`](https://github.com/moltar/projen-turborepo-test) GitHub repo for
a demo project.

## Example

```ts
import { TurborepoProject } from 'projen-turborepo'
import { typescript } from 'projen';

const turbo = new TurborepoProject({
name: 'my-monorepo',
turbo: {
pipeline: {
// ... your pipeline config, but defaults are already included
},
},

// this will probably all be true by default in the future, but for now all of these
// are experimental and need to be explicitly turned on.
pathMapping: true,
jestModuleNameMapper: true,
projectReferences: true,
parallelWorkflows: true,
vscodeMultiRootWorkspaces: true,
})

new typescript.TypeScriptProject({
parent: turbo,
defaultReleaseBranch: 'master',
name: 'my-first-project',
outdir: 'packages/my-first-project',
// ...
})

turbo.synth()
```

Then use `turbo` to run the tasks:

```plain
$> turbo run test
โ€ข Packages in scope: my-first-project
โ€ข Running test in 1 packages
my-first-project:test: cache hit, replaying output 2264dbd676fac83e
my-first-project:test: yarn run v1.22.11
my-first-project:test: $ npx projen test
my-first-project:test: ----------|---------|----------|---------|---------|-------------------
my-first-project:test: File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s
my-first-project:test: ----------|---------|----------|---------|---------|-------------------
my-first-project:test: All files | 100 | 100 | 100 | 100 |
my-first-project:test: index.ts | 100 | 100 | 100 | 100 |
my-first-project:test: ----------|---------|----------|---------|---------|-------------------
my-first-project:test: Done in 4.29s.
my-first-project:test: ๐Ÿ‘พ test | jest --passWithNoTests --all --updateSnapshot
my-first-project:test: PASS test/hello.test.ts
my-first-project:test: โœ“ hello (1 ms)
my-first-project:test:
my-first-project:test: Test Suites: 1 passed, 1 total
my-first-project:test: Tests: 1 passed, 1 total
my-first-project:test: Snapshots: 0 total
my-first-project:test: Time: 1.148 s, estimated 2 s
my-first-project:test: Ran all test suites.
my-first-project:test: ๐Ÿ‘พ test ยป eslint | eslint --ext .ts,.tsx --fix --no-error-on-unmatched-pattern src test build-tools .projenrc.js

Tasks: 1 successful, 1 total
Cached: 1 cached, 1 total
Time: 65ms >>> FULL TURBO
```