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
- Host: GitHub
- URL: https://github.com/abetoots/epic-stack-turborepo
- Owner: abetoots
- Created: 2024-03-22T03:48:26.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-05T07:24:51.000Z (almost 2 years ago)
- Last Synced: 2024-09-06T12:24:52.238Z (almost 2 years ago)
- Topics: epic-stack, turborepo
- Language: TypeScript
- Homepage:
- Size: 9.92 MB
- Stars: 5
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
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)