Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


opinionated webdev toolkit 🌰


  • Windows is not yet supported
  • SvelteKit and Vite integration is incomplete
  • Gro is actively used but has few users, so you'll likely find problems and undesirable limitations -- please open issues! or contact us directly
    • example: there are definitely things that should be configurable that aren't
    • gro wants all source code and assets to be in src/ or node_modules/, which may annoy some people very much; please open issues with your snags and we'll see if we can fix them


Gro is an opinionated webdev toolkit that complements SvelteKit for making web frontends, servers, and libraries. It includes:



depends on node >= 16.6

Normally you'll want to install Gro as a dev dependency:

npm i -D @feltcoop/gro

It's handy to install globally too:

npm i -g @feltcoop/gro
gro # prints available tasks - defers to the project's locally installed version of Gro


gro # print all available tasks with the pattern `*.task.ts`
gro help # same as `gro`
gro --help # same as `gro`
gro some/dir # list all tasks inside `src/some/dir`
gro some/file # run `src/some/file.task.ts`
gro some/file.task.ts # same as above
gro test # run `src/test.task.ts` if it exists, falling back to Gro's builtin
gro test --help # print info about the "test" task; works for every task

Gro has a number of builtin tasks that you can run with the CLI. To learn more see the task docs and the generated task index.

gro dev # start developing in watch mode
gro dev -- vite --port 3003 # forward args by separating sections with --
gro build # build everything for production

Testing with uvu:

gro test # run all tests for `*.test.ts` files with `uvu`
gro test filepattern1 filepatternB
gro test -- uvu --forwarded_args 'to uvu'

Check all the things:

gro check # does all of the following:
gro typecheck # typecheck JS/TypeScript and Svelte
gro test # run tests
gro gen --check # ensure generated files are current
gro format --check # ensure everything is formatted
gro lint # eslint

Formatting with prettier:

gro format # format all of the source files using Prettier
gro format --check # check that all source files are formatted

Codegen with gen:

gro gen # run codegen for all `*.gen.*` files
gro gen --check # error if any generated files are new or different

To deploy: (also see src/docs/

gro deploy # build and push to the `deploy` branch

To publish: (also see src/docs/

gro publish patch # bump version, publish to npm, and git push
gro publish major --and args --are forwarded --to 'npm version'


gro clean # delete all build artifacts from the filesystem
gro clean --svelte --nodemodules --git # also deletes dirs and prunes git branches
gro --version # print the Gro version


npm i
npm run bootstrap # build and link `gro` - needed only once
gro test # make sure everything looks good - same as `npm test`

# development
gro dev # start SvelteKit and other plugins, like API servers; usually you'll keep this running
gro build # update the `gro` CLI locally

# use your development version of `gro` locally in another project
cd ../otherproject
npm link ../gro

# release
gro build # build for release and update the `gro` CLI

credits 🐢🐢🐢

Gro builds on TypeScriptSvelteSvelteKitViteesbuilduvumrifs-extraESLintPrettiersvelte-checkJSON Schemajson-schema-to-typescript & more

license 🐦

public domain ⚘ The Unlicense


opinionated webdev toolkit 🌰