Contributions are welcome. New ideas, improvements and optimizations are collected via GitHub Discussions
. Feel free to take a look at the open topics or start a new discussion if you want.
This project should keep following values:
- lightweight and performant i18n solution
- best possible TypeScript support
- easy to use (DX)
- should work well together with other tools and services
This project uses pnpm
as a package manager. You can install it by running npm install -g pnpm
. It uses the same syntax like npm
for most commands, you only have to write pnpm
instead of npm
. e.g. pnpm install
or pnpm test
Tests are written using the uvu
test runner. If you make changes, please check if all tests are still passing by running pnpm test
.
To ensure the output-size of the core-library stays small, size-limit
is used. By running pnpm build
and then pnpm test:size
a report gets generated to see if changes had negative impact to the bundle size of the translation runtime.
If you change something in the generator
, please also:
- add some snapshot tests to the
packages/generator/test/generator.test.ts
-file - then run
pnpm test
=> you should see your tests failing - run
pnpm test:update-generated-files
- again run
pnpm test
=> your tests should pass - then add all the created
*.expected.*
-files to the git-index and - make sure these files look like you would expect them
- finally commit these files to the repository
If you make changes, please open a new PR
and fill out the template. Pull requests are run trough a GitHub Action that makes sure the source code is formatted and that all tests are passing.
This project uses prettier
and eslint
to ensure the code looks always the same.
Please run pnpm lint
to check for warnings and errors. You can also run pnpm lint:fix
to automatically fix most of the violations.