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

https://github.com/abetoots/epic-stack-turborepo

An example of the Epic Stack in a monorepo setup using turborepo
https://github.com/abetoots/epic-stack-turborepo

epic-stack turborepo

Last synced: 5 months ago
JSON representation

An example of the Epic Stack in a monorepo setup using turborepo

Awesome Lists containing this project

README

          

## What's inside?

This Turborepo includes the following packages/apps:

### Apps and Packages

- `docs`: a [Next.js](https://nextjs.org/) app
- `web`: an [Epic-Stack Remix](https://www.epicweb.dev/epic-stack) app
- `@repo/ui`: a stub React component library shared by both `web` and `docs`
applications
- `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next`
and `eslint-config-prettier`)
- `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo

Each package/app is 100% [TypeScript](https://www.typescriptlang.org/).

### Utilities

This Turborepo has some additional tools already setup for you:

- [TypeScript](https://www.typescriptlang.org/) for static type checking
- [ESLint](https://eslint.org/) for code linting
- [Prettier](https://prettier.io) for code formatting

### Build

To build all apps and packages, run the following command:

```
pnpm build
```

You should probably run `pnpm run prebuild` if necessary.

### Develop

To develop all apps and packages, run the following command:

```
cd my-turborepo
pnpm dev
```

### Run commands for a specific app or package

Package or app name is the package.json "name"

```bash
pnpm run build --filter web
```

Run dev:

```bash
pnpm run dev --filter docs
```

## Deployment

For monorepos, you'll probably want to handle deployments separately for each
app. The common practice is to use Dockerfiles and the guiding principle is:

1. Each app should be deployable independent of the monorepo. Avoid COPY files
from the root packages or other apps.
2. The Dockerfile should always work in the context of the root workspace. This
helps with CI/CD where we run docker commands especially the docker build
context.

### Remote Caching

Turborepo can use a technique known as
[Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) to
share cache artifacts across machines, enabling you to share build caches with
your team and CI/CD pipelines.

By default, Turborepo will cache locally. To enable Remote Caching you will need
an account with Vercel. If you don't have an account you can
[create one](https://vercel.com/signup), then enter the following commands:

```
cd my-turborepo
npx turbo login
```

This will authenticate the Turborepo CLI with your
[Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview).

Next, you can link your Turborepo to your Remote Cache by running the following
command from the root of your Turborepo:

```
npx turbo link
```

## Useful Links

Learn more about the power of Turborepo:

- [Tasks](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks)
- [Caching](https://turbo.build/repo/docs/core-concepts/caching)
- [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching)
- [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering)
- [Configuration Options](https://turbo.build/repo/docs/reference/configuration)
- [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference)