- Improve documentation: fix incomplete or missing docs, bad wording, examples or explanations
- Give feedback: we are constantly working on making SvelteUI better, please share how you use SvelteUI, what features are missing and what is done good via GitHub Discussions
- Share SvelteUI: share link to SvelteUI docs with everyone who can be interested, share SvelteUI on Twitter
- Contribute to codebase: propose new feature via GitHub Issues or find an existing one that you are interested in and work on it
- Give us a code review: help us identify problems with source code or make SvelteUI more performant
- Decide what you want to contribute
- If you want to implement new feature discuss it with a maintainer (Discord or Discussions) before jumping into code
- After finalizing issue details work on code, please follow commit convention
- Submit a PR if everything is fine
- Get a code review and fix all issues noticed by a maintainer
- PR is merged, and we're done!
SvelteUI is a monorepo and it is important to write clear commit messages to keep the git history clean. All commits made in this repository are divided in 3 groups:
- package commits related to particular package
- docs commits related to documentation
- core commits only related to repository tooling and not associated with any package
This repo uses commitizen to make commits easier. In order to commit changes made, you should run the npm run cm
command. Once you have done that, the commitizen cli messages will guide you through the commit process. Commit message consists of 2 parts:
[type]: Message
Examples:
[core]: Fix documentation deployment script
- Change made in repository script, it is not related to documentation or any package[docs]: update report issues link
- Change related to documentation[@svelteui/core]: updated SvelteUIProvider config
- Change in@svelteui/core
package in SvelteUIProvider component[@svelteui/actions]: added use-portal action
- Change in@svelteui/actions
package by adding a new action
- main - When the project hits 1.0, this will be for the current version, and patches for current minor version (1.0.x)
- next-minor - Contains next minor version (1.x.0), most likely you would want to create a PR to this branch
- experimental - Up to date with next minor version (1.x.0), implementing some experimental features that may or may not be added
- Install editorconfig extension for your editor
- vscode users only - install recommended extensions
- Fork repository, clone or download your fork
- Install dependencies at the root of the monorepo with npm (make sure to install with npm only)
- After your node modules have installed:
If developing in [svelteui-prism, svelteui-dates, or svelteui-demos]
- run
npm run package
- If you want to watch for changes in one of the packages that they depend on, run
npm run watch
in their directory. - You will need two terminal sessions open at the very least. If this doesn't apply to your situation move on to step 2
- If you want to watch for changes in one of the packages that they depend on, run
- cd into the package you want to develop on
- run
npm run dev
If developing in [svelteui-core, svelteui-actions, svelteui-utilities, or svelteui-motion]
- cd into the package you want to develop on
- run
npm run dev
- To start docs -
cd docs && npm install && npm run dev
All packages npm scripts are located at main package.json, individual packages have scripts, but they should not be interacted with directly. This is due to the nature of TurboRepo. All scripts should be ran from the root of the monorepo.
clean
- removes all unnecessary files and folders from packages (i.e. node_modules)format
- runs prettier on packages folderlint
- runs eslint on packages folder (run format before running lint)test
- runs tests with vitestpackage
- generates built versions of packages (needed for cross package development)repo:prepush
- runs sort, format, lint and test (run this before pushing your code)cm
- runs git commands to add and commit through commitizen (this is the recommended way to commit as it follows the convention automatically)