Monorepo boilerplate that I use, transformed into its own template repository.
Not working as of 22.12.2022 due to how base paths are configured with SvelteKit
Use this template
ssh-keygen -t ed25519 -C "your_email@example.com"
and copy the public key to Settings > Deploy keys > Add deploy key
(I named it GH_ACTIONS_DEPLOY_KEY - public SSH key
). Then copy the private key to Settings > Secrets > Actions
with name GH_ACTIONS_DEPLOY_KEY
. This is required for the Github pages deployment and you can use it to SSH to other instances as wellSettings > Actions > General
tick Allow all actions and reusable workflows
Read and write permissions
and check Allow GitHub actions to create and approve pull requests
. This is required for the Changesets to create PRs and push tags (eg @awesome-org/types@0.1.2
) from CI@awesome-org
and @teemukoivisto
using your own organization / usernameYou can publish your component & other packages to npm. However, to use private npm packages you must either upgrade your npm account or use Github package registry. There's a one example package at packages/private-pkg
. Basically, how it goes is you must use your org/user name as the package's org. Then you must add a Github access token (I use the env GH_PAT) to the repository secrets which allows writing to package registry. Also anyone who wants to use that package will need an access token as well. Otherwise the flow is very much the same, use changesets to generate CHANGELOGs and code away!
You must have pnpm
>=7 installed globally: npm i -g pnpm
. Also you need Docker. And if you want to access the Postgres instance psql
.
pnpm i
docker-compose up -d postgres
cp ./packages/api/.env-example ./packages/api/.env && cp ./packages/client/.env-example ./packages/client/.env && cp ./packages/db/.env-example ./packages/db/.env
pnpm --filter db migrate
pnpm --filter db seed
pnpm start
pnpm
is a package manager that uses linking to reduce installation times.
It's pretty cool but sometimes the linking might get funky, eg you remove a package from packages/
and the links might not work anymore even after doing pnpm i
. In that case trusty ol rm -rf ./**/node_modules && pnpm i
helps.
pnpm --filter api add jsonwebtoken
.pnpm --filter client add -D rollup-svelte-plugin
pnpm --filter client lint
pnpm -r lint
. NOTE: this will halt on first error so you might want to run it as script instead with concurrently
.pnpm --filter=!api lint
pnpm update
This project uses changesets https://github.com/changesets/changesets to generate changelogs but in short, when you commit from terminal the changeset prompt is opened in which you should write your functionality using conventional commits https://www.conventionalcommits.org/en/v1.0.0/ to create a changeset (which is for something that changes the library for the downstream users).