Pluralize and singularize any word
npm install @theothergothamdev/pluralize-ts

!build

> A TypeScript port of the popular pluralize library - Pluralize and singularize any word with full type safety.
This is a TypeScript fork of the original pluralize library, modernized with full type definitions, ESM support, and modern testing infrastructure.
- ๐ฆ Full TypeScript support with accurate type definitions
- ๐ ESM and CommonJS dual package
- โจ Modern build tooling with esbuild
- ๐งช Comprehensive test suite using Vitest
- ๐ช Same powerful API as the original, now with type safety
``bashnpm
npm install @theothergothamdev/pluralize-ts
Usage
$3
`typescript
import pluralize from "@theothergothamdev/pluralize-ts";pluralize("test"); //=> "tests"
pluralize("test", 0); //=> "tests"
pluralize("test", 1); //=> "test"
pluralize("test", 5); //=> "tests"
pluralize("test", 1, true); //=> "1 test"
pluralize("test", 5, true); //=> "5 tests"
`$3
`typescript
const pluralize = require("@theothergothamdev/pluralize-ts").default;
`$3
The library exports a default function with additional methods:
`typescript
// Main function
pluralize(word: string, count?: number, inclusive?: boolean): string// Additional methods
pluralize.plural(word: string): string
pluralize.singular(word: string): string
pluralize.isPlural(word: string): boolean
pluralize.isSingular(word: string): boolean
// Add custom rules
pluralize.addPluralRule(rule: string | RegExp, replacement: string): void
pluralize.addSingularRule(rule: string | RegExp, replacement: string): void
pluralize.addIrregularRule(single: string, plural: string): void
pluralize.addUncountableRule(word: string | RegExp): void
`$3
`typescript
// Basic usage
pluralize("test"); //=> "tests"
pluralize("test", 1); //=> "test"
pluralize("test", 5); //=> "tests"
pluralize("test", 1, true); //=> "1 test"// Custom rules
pluralize.addPluralRule(/gex$/i, "gexii");
pluralize.plural("regex"); //=> "regexii"
pluralize.addSingularRule(/singles$/i, "singular");
pluralize.singular("singles"); //=> "singular"
pluralize.addIrregularRule("irregular", "regular");
pluralize.plural("irregular"); //=> "regular"
pluralize.addUncountableRule("paper");
pluralize.plural("paper"); //=> "paper"
// Check word form
pluralize.isPlural("tests"); //=> true
pluralize.isSingular("test"); //=> true
`Development
`bash
Install dependencies
pnpm installBuild the library
pnpm buildRun tests
pnpm testRun tests with watch mode
pnpm test:watchRun tests with UI
pnpm test:uiGenerate coverage report
pnpm test:coverageLint
pnpm lintFormat
pnpm format
`Project Structure
`
src/
โโโ __tests__/ # Test files
โ โโโ fixtures/ # Test data
โ โโโ unit/ # Unit tests
โ โโโ pluralize.test.ts
โโโ core/ # Core functionality
โโโ utils/ # Utility functions
โโโ types/ # TypeScript types
โโโ index.ts # Main entry point
``This fork modernizes the original pluralize library by:
1. Adding full TypeScript support with proper type definitions
2. Modernizing the build system with esbuild
3. Updating the testing infrastructure to use Vitest
4. Supporting both ESM and CommonJS
5. Maintaining the same powerful API while adding type safety
MIT
Original project by Blake Embrey