Open source libraries and configurations used at Customer.io.
- @ciolabs/config-eslint - Shared ESLint configuration for Customer.io projects
- @ciolabs/config-prettier - Shared Prettier configuration for Customer.io projects
- @ciolabs/html-email-formatter - Format and prettify HTML email content with conditional comment support
- @ciolabs/html-find-conditional-comments - Finds all conditional comments in a string
- @ciolabs/html-preserve-comment-whitespace - Preserves the presence or lack thereof of whitespace surrounding HTML comments
- @ciolabs/html-process-conditional-comments - Makes it easy to safely process HTML inside of conditional comments
- @ciolabs/htmlparser2-source - A wrapper around htmlparser2 that adds source range information to the AST
- @ciolabs/html-mod - Manipulate HTML strings with a Browser-like API
This monorepo uses pnpm workspaces for managing multiple packages. pnpm provides better dependency resolution, faster installs, and automatic build ordering based on package dependencies.
pnpm install
Note: This project requires pnpm >= 10.0.0. If you don't have pnpm installed, you can install it with
npm install -g pnpm
or use Corepack:corepack enable
.
pnpm run lint # Lint all packages
pnpm run lint:fix # Lint and auto-fix issues
pnpm run format # Format all files with Prettier
pnpm run format:check # Check formatting without changes
pnpm run typecheck # Type check all packages
pnpm run build # Build all packages (in dependency order)
pnpm run test # Run tests for all packages
pnpm run clean # Clean build artifacts
This project uses Changeset for version management and publishing.
When you make changes that should be released:
pnpm run changeset
This will prompt you to:
- Select which packages have changed
- Choose the type of change (major, minor, patch)
- Write a summary of the changes
Once you've created changesets, the release process is automated:
- Changeset creates a release PR automatically with version bumps and changelog
- Review and merge the release PR - this triggers the GitHub Action
- Packages are automatically published to npm with GitHub releases created
This repository uses Husky and lint-staged to automatically lint and format changed files before each commit.
- Fork the repository
- Create a feature branch
- Make your changes
- Ensure all tests pass and code is properly formatted
- Create a changeset:
pnpm run changeset
- Submit a pull request
Apache License 2.0 with Commons Clause - see LICENSE file for details.
Made with ❤️ by the team at Customer.io