Convert into a text of capitalized words without separators
npm install text-pascal-case[![NPM version][npm-image]][npm-url]
[![NPM downloads][downloads-image]][downloads-url]
[![Bundle size][bundlephobia-image]][bundlephobia-url]


> Transform text into PascalCase format where the first letter of each word is capitalized with no separators.
- Lightweight - Only ~450B minified + gzipped
- Type-safe - Full TypeScript support with comprehensive type definitions
- Zero dependencies - No external dependencies
- Tree-shakeable - ES modules support
- Universal - Works in browsers, Node.js, and serverless environments
- Well-tested - Comprehensive test suite with edge cases
- Customizable - Flexible options for advanced use cases
``bashnpm
npm install text-pascal-case
๐ฏ Quick Start
`javascript
import { pascalCase } from "text-pascal-case";console.log(pascalCase("hello world")); // "HelloWorld"
console.log(pascalCase("user_profile_data")); // "UserProfileData"
console.log(pascalCase("background-color")); // "BackgroundColor"
`๐ Usage
$3
`javascript
import { pascalCase } from "text-pascal-case";console.log(pascalCase("hello world")); // "HelloWorld"
`$3
`javascript
const { pascalCase } = require("text-pascal-case");console.log(pascalCase("hello world")); // "HelloWorld"
`$3
`typescript
import {
pascalCase,
pascalCaseTransformMerge,
Options,
} from "text-pascal-case";const result: string = pascalCase("hello world");
console.log(result); // "HelloWorld"
`๐ Transformation Examples
$3
`javascript
import { pascalCase } from "text-pascal-case";// From different cases
pascalCase("hello world"); // "HelloWorld"
pascalCase("Hello World"); // "HelloWorld"
pascalCase("HELLO WORLD"); // "HelloWorld"
pascalCase("snake_case"); // "SnakeCase"
pascalCase("kebab-case"); // "KebabCase"
pascalCase("dot.case"); // "DotCase"
pascalCase("camelCase"); // "CamelCase"
pascalCase("CONSTANT_CASE"); // "ConstantCase"
// Complex examples
pascalCase("XMLHttpRequest"); // "XmlHttpRequest"
pascalCase("iPhone"); // "IPhone"
pascalCase("version 1.2.3"); // "Version123"
pascalCase("user-profile-data"); // "UserProfileData"
`$3
`javascript
import { pascalCase, pascalCaseTransformMerge } from "text-pascal-case";// Custom transform to merge numbers without separator
pascalCase("version 1.2.3", {
transform: pascalCaseTransformMerge,
}); // "Version123"
// Custom word splitting
pascalCase("XMLHttpRequest", {
splitRegexp: /([a-z])([A-Z])/g,
}); // "XmlHttpRequest"
// Custom character stripping
pascalCase("hello@world.com", {
stripRegexp: /[@.]/g,
}); // "HelloWorldCom"
// Custom transformation function
pascalCase("api-v2-endpoint", {
transform: (word, index) => {
if (word === "api") return "API";
if (word === "v2") return "V2";
return word;
},
}); // "APIV2Endpoint"
`๐ Real-World Examples
$3
`javascript
import { pascalCase } from "text-pascal-case";// Component names
pascalCase("user_profile"); // "UserProfile"
pascalCase("email_validator"); // "EmailValidator"
pascalCase("data_service"); // "DataService"
pascalCase("auth_middleware"); // "AuthMiddleware"
pascalCase("payment_gateway"); // "PaymentGateway"
`$3
`javascript
import { pascalCase } from "text-pascal-case";// Component file names
pascalCase("user-profile"); // "UserProfile"
pascalCase("navigation-bar"); // "NavigationBar"
pascalCase("modal-dialog"); // "ModalDialog"
pascalCase("search-input"); // "SearchInput"
pascalCase("loading-spinner"); // "LoadingSpinner"
`$3
`javascript
import { pascalCase } from "text-pascal-case";// Model class names
pascalCase("user_account"); // "UserAccount"
pascalCase("order_item"); // "OrderItem"
pascalCase("product_category"); // "ProductCategory"
pascalCase("shipping_address"); // "ShippingAddress"
`$3
`javascript
import { pascalCase } from "text-pascal-case";// Convert API endpoints to TypeScript interface names
const endpoints = [
"user_profile",
"order_history",
"payment_method",
"shipping_address",
];
const typeNames = endpoints.map(
(endpoint) =>
${pascalCase(endpoint)}Response,
);
console.log(typeNames);
// ["UserProfileResponse", "OrderHistoryResponse", "PaymentMethodResponse", "ShippingAddressResponse"]
`๐ API Reference
$3
Converts a string to PascalCase.
#### Parameters
-
input (string): The string to convert
- options (Options, optional): Configuration options#### Returns
-
string: The PascalCase formatted string#### Options
`typescript
interface Options {
// Custom transform function for word processing
transform?: (word: string, index: number, words: string[]) => string; // Regex to strip characters before processing
stripRegexp?: RegExp;
// Custom split function
split?: (value: string) => string[];
}
`$3
A transform function that merges numeric characters without separation.
`javascript
import { pascalCase, pascalCaseTransformMerge } from "text-pascal-case";pascalCase("version 1.2.3", { transform: pascalCaseTransformMerge }); // "Version123"
`๐ง Advanced Configuration
$3
`javascript
import { pascalCase } from "text-pascal-case";// Split on specific patterns
pascalCase("XMLHttpRequest", {
splitRegexp: /([a-z])([A-Z])/g,
}); // "XmlHttpRequest"
// Split on numbers
pascalCase("user123data", {
splitRegexp: /([a-zA-Z])(\d)/g,
}); // "User123Data"
`$3
`javascript
import { pascalCase } from "text-pascal-case";// Strip specific characters
pascalCase("hello@world.com", {
stripRegexp: /[@.]/g,
}); // "HelloWorldCom"
// Strip all non-alphanumeric
pascalCase("hello!@#world", {
stripRegexp: /[^a-zA-Z0-9]/g,
}); // "HelloWorld"
`$3
`javascript
import { pascalCase } from "text-pascal-case";// Preserve acronyms
pascalCase("xml-http-request", {
transform: (word, index) => {
const acronyms = ["xml", "http", "api", "url"];
if (acronyms.includes(word.toLowerCase())) {
return word.toUpperCase();
}
return word;
},
}); // "XMLHTTPRequest"
// Custom business logic
pascalCase("user-v2-api", {
transform: (word, index) => {
if (word === "v2") return "V2";
if (word === "api") return "API";
return word;
},
}); // "UserV2API"
`๐ Bundle Size
This package is optimized for minimal bundle size:
- Minified: ~450B
- Gzipped: ~250B
- Tree-shakeable: Yes
- Side effects: None
๐ Browser Support
- Modern browsers: ES2015+ (Chrome 51+, Firefox 54+, Safari 10+)
- Node.js: 12+
- TypeScript: 4.0+
- Bundle formats: UMD, ESM, CommonJS
๐งช Testing
`bash
Run tests
pnpm testRun tests in watch mode
pnpm test --watchRun tests with coverage
pnpm test --coverageType checking
pnpm typecheckLinting
pnpm lint
`๐ Related Packages
text-camel-case - Convert to camelCase
- text-capital-case - Convert to Capital Case
- text-constant-case - Convert to CONSTANT_CASE
- text-dot-case - Convert to dot.case
- text-header-case - Convert to Header-Case
- text-case - All case transformations in one package๐ License
๐ค Contributing
1. Fork the repository
2. Create your feature branch (
git checkout -b feature/amazing-feature)
3. Commit your changes (git commit -m 'Add some amazing feature')
4. Push to the branch (git push origin feature/amazing-feature`)- ๐ง Email: selikhov.dmitrey@gmail.com
- ๐ Issues: GitHub Issues
- ๐ฌ Discussions: GitHub Discussions
- ๐ Documentation: Full Documentation
---
Made with โค๏ธ by Dmitry Selikhov
[npm-image]: https://img.shields.io/npm/v/text-pascal-case.svg?style=flat
[npm-url]: https://npmjs.org/package/text-pascal-case
[downloads-image]: https://img.shields.io/npm/dm/text-pascal-case.svg?style=flat
[downloads-url]: https://npmjs.org/package/text-pascal-case
[bundlephobia-image]: https://img.shields.io/bundlephobia/minzip/text-pascal-case.svg
[bundlephobia-url]: https://bundlephobia.com/result?p=text-pascal-case