isentinel
isentinel Preferences
Opinionated tooling and patterns for roblox-ts development.
Quick Summary
| Category | Preference |
|---|---|
| Package Manager | pnpm (bun as optional runtime) |
| Language | TypeScript (strict + extra checks) |
| TypeScript Config | @isentinel/tsconfig |
| Linting | @isentinel/eslint-config (no Prettier) |
| Testing | Jest-roblox, TDD approach |
| Git Hooks | husky + lint-staged |
| Commits | Conventional Commits |
Package Manager (pnpm)
Use pnpm as the package manager. Can use bun as runtime for scripts.
@antfu/ni
Use @antfu/ni for unified package manager commands (It auto-detects the
package manager (pnpm/npm/yarn/bun) based on lockfile):
| Command | Description |
|---|---|
ni |
Install dependencies |
ni <pkg> |
Add dependency |
ni -D <pkg> |
Add dev dependency |
nr <script> |
Run script |
nu |
Upgrade dependencies |
nun <pkg> |
Uninstall dependency |
nci |
Clean install |
nlx <pkg> |
Execute package |
TypeScript
Use @isentinel/tsconfig with the roblox preset. Strict mode plus additional
checks:
exactOptionalPropertyTypesnoUncheckedIndexedAccessnoPropertyAccessFromIndexSignaturenoImplicitOverridenoImplicitReturnsnoFallthroughCasesInSwitch
{
"extends": "@isentinel/tsconfig/roblox"
}
Linting
Use @isentinel/eslint-config. No Prettier - ESLint handles formatting.
// eslint.config.ts
import { isentinel } from "@isentinel/eslint-config";
export default isentinel();
Fix errors with nr lint --fix.
Error Handling
Prefer assertions over silent failing. Fail fast, fail loud.
See error-handling.md for patterns.
Test-Driven Development
Red → Green → Refactor:
- Write a failing test
- Write minimal code to pass
- Refactor with test protection
Simplicity Rules (in order)
- Passes all tests
- Expresses intent clearly
- Contains no duplication
- Has minimum elements
Three similar lines of code is better than a premature abstraction.
See testing.md for Jest-roblox setup.
References
| Topic | Reference |
|---|---|
| Tooling details | tooling.md |
| TypeScript config | typescript.md |
| Linting rules | linting.md |
| Testing (TDD) | testing.md |
| Error handling | error-handling.md |
More from christopher-buss/rbxts-jest-transformer
tsdown
Bundle TypeScript and JavaScript libraries with blazing-fast speed powered by Rolldown. Use when building libraries, generating type declarations, bundling for multiple formats, or migrating from tsup.
1jest
Testing Roblox/Luau code with Jest Roblox. Use when writing tests, mocking
1pnpm
Node.js package manager with strict dependency resolution. Use when running
1vitest
Vitest fast unit testing framework powered by Vite with Jest-compatible API. Use when writing tests, mocking, configuring coverage, or working with test filtering and fixtures.
1roblox-ts
|
1humanizer
|
1