md-confluence
v1.0.2
Published
A Node.js library to publish markdown files to Atlassian Confluence
Maintainers
Readme
md-confluence
A Node.js library and CLI tool to publish markdown files to Atlassian Confluence.
Features
- 🚀 Publish single markdown files or multiple files using configuration
- 📝 Converts markdown to Confluence storage format
- 🔄 Only updates pages when content has changed (uses SHA256 hashing)
- 🎯 Supports custom code block rendering for Confluence
- 📦 Available as both a library and CLI tool
- ✨ TypeScript-ready with JSDoc annotations
Installation
Global Installation (CLI usage)
npm install -g md-confluenceLocal Installation (library usage)
npm install md-confluenceCLI Usage
Environment Variables
Set these environment variables:
export CONFLUENCE_DOC_EMAIL="[email protected]"
export CONFLUENCE_DOC_TOKEN="your-api-token"
export CONFLUENCE_URL="https://your-company.atlassian.net"Commands
Publish multiple pages using default pages.json
md-confluencePublish multiple pages using custom config file
md-confluence --config pages.jsonPublish single file
md-confluence --file README.md --page-id 123456789Use custom Confluence URL
md-confluence --url https://mycompany.atlassian.netShow help
md-confluence --helpConfiguration File Format
Create a pages.json file mapping Confluence page IDs to markdown files:
{
"123456789": "README.md",
"987654321": "docs/api-guide.md",
"456789123": "docs/deployment.md"
}Library Usage
Basic Example
import { ConfluenceConfig, publishMarkdownToConfluence } from 'md-confluence';
const config = new ConfluenceConfig({
userEmail: '[email protected]',
apiToken: 'your-api-token',
confluenceUrl: 'https://your-company.atlassian.net',
repoUrl: 'https://github.com/your-org/your-repo' // optional
});
const result = await publishMarkdownToConfluence(
'123456789', // Confluence page ID
'./README.md', // Path to markdown file
config
);
console.log(result);Publish Multiple Pages
import { ConfluenceConfig, publishMultiplePages } from 'md-confluence';
const config = new ConfluenceConfig({
userEmail: '[email protected]',
apiToken: 'your-api-token',
confluenceUrl: 'https://your-company.atlassian.net'
});
const pageMapping = {
'123456789': 'README.md',
'987654321': 'docs/api-guide.md'
};
const results = await publishMultiplePages(pageMapping, config);
console.log(results);Convert Markdown Only
import { convertMarkdownToConfluence } from 'md-confluence';
const markdownContent = '# Title\n\nSome content';
const { title, html } = convertMarkdownToConfluence(markdownContent);
console.log('Title:', title);
console.log('HTML:', html);API Reference
ConfluenceConfig
Configuration class for Confluence connection.
const config = new ConfluenceConfig({
userEmail: 'string', // Required
apiToken: 'string', // Required
confluenceUrl: 'string', // Required
repoUrl: 'string' // Optional
});Functions
publishMarkdownToConfluence(pageId, filePath, config, options)- Publish single filepublishMultiplePages(pageMapping, config, options)- Publish multiple filesconvertMarkdownToConfluence(markdown, options)- Convert markdown to Confluence formatgetLatestVersion(pageId, config)- Get latest version of Confluence pageupdateContent(contentBody, config)- Update Confluence page contentcalculateContentHash(content)- Calculate SHA256 hash of contentloadPagesConfig(configPath)- Load pages configuration from JSON file
Development
Install Dependencies
npm installRun Tests
npm test
npm run test:coverage
npm run test:watchLint Code
npm run lint
npm run lint:fixRun CLI in Development
npm run dev # Shows help
npm start -- --help # Also shows helpGetting Confluence API Token
- Go to Atlassian Account Settings
- Click "Create API token"
- Give it a label and click "Create"
- Copy the token (you won't be able to see it again)
Getting Confluence Page ID
- Go to your Confluence page
- Click "..." → "Page Information"
- The page ID is in the URL:
/pages/viewinfo.action?pageId=PAGE_ID
License
MIT
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Run tests and linting
- Submit a pull request
