Skip to content

Scaffold a monorepo to collect Svelte and TypeScript projects

License

Notifications You must be signed in to change notification settings

adevien-solutions/svaffold

Repository files navigation

Svaffold

Scaffold a monorepo to collect Svelte and TypeScript projects.

⚠️ Warning ⚠️ This is a highly opinionated tool, but PRs are welcome to make it more generalised. Refer to Contributing for more information.

The following assumptions are made:

  • The package manager is pnpm
  • All projects are using TypeScript
  • All web projects are using SvelteKit and TailwindCSS
  • If no design system was selected, the forms and typography Tailwind plugins will be installed

What can be generated

A monorepo that uses Turborepo. It can generate the following empty projects:

SvelteKit:

  • Landing page
  • Blog
  • Custom app
  • Component library

Other:

  • CMS
  • CLI
  • Assets (shared static files)
  • Config (shared configuration files)

Options

TailwindCSS will be installed, but you can extend it with the following design systems:

  • DaisyUI
  • SkeletonUI
  • None

You can select the following deployment methods:

  • Auto

  • Cloudflare

    (A GitHub Workflow will be created to redeploy when the package has changes)

  • Vercel

  • Docker (Node.js)

    (A Dockerfile will be generated)

In case you select "Component library", you can choose between the following story builders:

  • Storybook
  • Histoire
  • None

In case you select "CMS", you can select from the following:

  • Payload
  • Sanity
  • Storyblok

In case you select "Assets", you can select the following bucket providers:

(A GitHub Workflow will be created to sync the assets with your bucket)

  • GCP Cloud Storage
  • AWS S3
  • Cloudflare R2
  • None

Requirements

  • node.js >= 16
  • pnpm >= 7
  • git

Usage

npx svaffold@latest root-dir

Arguments:

Name Description
directory root of the monorepo

Options:

Option Description
--force overwrite existing files (default: false)
--verbose output the messages of subprocesses (default: false)
-h, --help display help for command
-V, --version output the version number

Contributing

All contributions are welcome, especially ones that make the tool more robust and generalised. To get started:

  1. git clone https://github.com/adevien-solutions/svaffold.git
  2. cd svaffold
  3. npm i

Test locally

  1. npm run update-local
  2. svaffold <dir>