A collection of powerful extensions for TipTap/ProseMirror editor, including DOCX export functionality and more.
- tiptap-extension-export-docx - Export TipTap/ProseMirror content to Microsoft Word DOCX format
# Install with npm
$ npm install tiptap-extension-export-docx
# Install with yarn
$ yarn add tiptap-extension-export-docx
# Install with pnpm
$ pnpm add tiptap-extension-export-docximport { generateDOCX } from "tiptap-extension-export-docx";
import { writeFileSync } from "node:fs";
// Your TipTap/ProseMirror editor content
const content = {
type: "doc",
content: [
{
type: "paragraph",
content: [
{
type: "text",
marks: [{ type: "bold" }, { type: "italic" }],
text: "Hello, world!",
},
],
},
],
};
// Convert to DOCX and save to file
const docx = await generateDOCX(content, { outputType: "nodebuffer" });
writeFileSync("document.docx", docx);- Node.js 18.x or higher
- pnpm 9.x or higher (recommended package manager)
- Git for version control
-
Clone the repository:
git clone https://github.com/DemoMacro/tiptap-extension.git cd tiptap-extension -
Install dependencies:
pnpm install
-
Development mode:
pnpm dev
-
Build all packages:
pnpm build
-
Test locally:
# Link the package globally for testing cd packages/export-docx pnpm link --global # Test in your project import { generateDOCX } from 'tiptap-extension-export-docx';
pnpm dev # Development mode with watch
pnpm build # Build all packages
pnpm lint # Run code formatting and lintingtiptap-extension/
├── packages/
│ └── export-docx/ # DOCX export extension
│ ├── src/
│ │ ├── docx.ts # Main export functionality
│ │ ├── converters/ # Content converters
│ │ ├── types.ts # Type definitions
│ │ ├── option.ts # Configuration options
│ │ └── utils.ts # Utility functions
│ ├── package.json # Package manifest
│ ├── build.config.ts # Build configuration
│ └── README.md # Package documentation
├── playground/ # Testing and examples
│ ├── html/ # HTML test files
│ ├── extensions.ts # TipTap extensions
│ └── index.ts # Test runner
├── package.json # Monorepo configuration
├── pnpm-workspace.yaml # pnpm workspace configuration
└── README.md # This file
- Converters (
src/converters/): Content type to DOCX conversion - Types (
src/types.ts): TypeScript type definitions for TipTap content - Options (
src/option.ts): Configuration system for export settings - Utils (
src/utils.ts): Shared utilities for image processing and helpers
- docx: Microsoft Word document generation
- ofetch: Modern fetch API with better error handling
- image-meta: Image metadata extraction
- unbuild: Modern bundler and build tool
The export system supports extensive configuration:
- Document Properties: Title, author, description, metadata
- Image Options: Default sizing, positioning, text wrapping
- Table Options: Layout, borders, cell formatting
- Output Types: Multiple formats (Buffer, ArrayBuffer, Base64, etc.)
We welcome contributions! Here's how to get started:
-
Fork the repository on GitHub
-
Clone your fork:
git clone https://github.com/YOUR_USERNAME/tiptap-extension.git cd tiptap-extension -
Add upstream remote:
git remote add upstream https://github.com/DemoMacro/tiptap-extension.git
-
Install dependencies:
pnpm install
-
Development mode:
pnpm dev
-
Test locally:
# Link the package globally for testing cd packages/export-docx pnpm link --global # Test your changes import { generateDOCX } from 'tiptap-extension-export-docx';
- Code: Follow our project standards
- Test:
pnpm build && <test your extension> - Commit: Use conventional commits (
feat:,fix:, etc.) - Push: Push to your fork
- Submit: Create a Pull Request to upstream repository
This project follows core principles:
- TipTap Focus: Built specifically for TipTap/ProseMirror ecosystem
- Type Safety: Full TypeScript support with comprehensive types
- Modular Design: Each converter handles specific content types
- Extensible: Easy to add new content type converters
- Performance: Optimized for large documents and batch processing
- User Experience: Simple API with powerful configuration options
This project is licensed under the MIT License - see the LICENSE file for details.
Built with ❤️ by Demo Macro