mirror of
https://github.com/amitwh/markdown-converter.git
synced 2026-08-02 10:00:17 +05:30
96 lines
2.2 KiB
Markdown
96 lines
2.2 KiB
Markdown
# Building MarkdownConverter with Tauri 2.x
|
|
|
|
## Prerequisites
|
|
|
|
1. **Node.js 18+** and npm
|
|
2. **Rust 1.75+** — install via [rustup](https://rustup.rs/)
|
|
|
|
```bash
|
|
# Install Rust
|
|
winget install Rust.Rustup # Windows
|
|
# OR
|
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # macOS/Linux
|
|
|
|
# Set stable as default
|
|
rustup default stable
|
|
|
|
# Install Tauri CLI (alternative to npm package)
|
|
cargo install tauri-cli --locked
|
|
```
|
|
|
|
## Development
|
|
|
|
```bash
|
|
# Install dependencies
|
|
npm install
|
|
|
|
# Run frontend dev server
|
|
npm run dev
|
|
|
|
# In another terminal, run Tauri dev
|
|
npm run tauri:dev
|
|
|
|
# Or use Tauri CLI directly (if installed globally via cargo)
|
|
cargo tauri dev
|
|
```
|
|
|
|
## Production Build
|
|
|
|
```bash
|
|
# Build the frontend first
|
|
npm run build:frontend
|
|
|
|
# Then build Tauri app
|
|
npm run tauri:build
|
|
|
|
# Output:
|
|
# Windows: src-tauri/target/release/markdown-converter.exe
|
|
# Installer: dist/MarkdownConverter-Setup-4.3.0.exe
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### Rust not found
|
|
Ensure Rust is in PATH: `rustc --version`
|
|
|
|
### WebView2 not installed (Windows)
|
|
Download from https://developer.microsoft.com/en-us/microsoft-edge/webview2/
|
|
|
|
### pandoc not found
|
|
Pandoc must be installed and in PATH. Download from https://pandoc.org/installing.html
|
|
|
|
## File Structure
|
|
|
|
```
|
|
src-tauri/
|
|
src/
|
|
main.rs # Binary entry point
|
|
lib.rs # Tauri app setup + command registration
|
|
commands/ # Rust commands (file, git, pdf, export, etc.)
|
|
menu.rs # Native menu
|
|
tray.rs # System tray
|
|
pdf_ops.rs # PDF processing
|
|
plugin_manager.rs
|
|
error.rs
|
|
Cargo.toml
|
|
tauri.conf.json
|
|
capabilities/default.json
|
|
icons/
|
|
src/
|
|
renderer.js # Main renderer (updated for Tauri invoke/listen)
|
|
tauri-commands.js # Tauri command bridge
|
|
index.html # Main HTML (copied to dist/index.html)
|
|
dist/
|
|
index.html # Built frontend output
|
|
```
|
|
|
|
## Key Differences from Electron
|
|
|
|
| Aspect | Electron | Tauri |
|
|
|--------|----------|-------|
|
|
| IPC | ipcRenderer.invoke() | invoke() from @tauri-apps/api |
|
|
| Events | ipcRenderer.on() | listen() from @tauri-apps/api |
|
|
| File access | Node.js fs module | Rust std::fs or tauri-plugin-fs |
|
|
| Native menus | Electron Menu API | tauri menu API |
|
|
| Settings | electron-store | tauri-plugin-store |
|
|
| Binary size | ~150MB | ~10MB | |