space-remover Svelte Themes

Space Remover

TUIから貼り付けたテキストの末尾空白と共通インデントを取り除く Mac / Windows / Web アプリ (Svelte 5 + Tauri 2)

space-remover

TUI から貼り付けたテキストの 行末空白共通する先頭インデント を取り除くデスクトップ/Web アプリ。

  • 入力欄に貼り付けると、整形結果が下に表示されます
  • ワンクリック(または Cmd/Ctrl+Enter)でクリップボードにコピー
  • 「末尾空白除去」「共通インデント除去 (dedent)」をそれぞれ ON/OFF 可能
  • 同じコードベースを Web (ブラウザ)と Mac/Windows デスクトップ (Tauri 2)の両方で利用可能

必要環境

  • Node.js 18 以上 / npm
  • デスクトップビルドのみ: Rust 1.77 以上 (rustup でインストール)

セットアップ

npm install

Web 版

npm run dev      # http://localhost:5173 で開発サーバー
npm run build    # dist/ に静的ファイルを出力
npm run preview  # build 結果のローカル確認

dist/ の中身は静的ホスティング(GitHub Pages、Vercel、社内 NAS など)にそのまま置けます。

デスクトップ版 (Tauri 2)

事前に Rust が必要です。Homebrew を使う場合:

brew install rustup
rustup-init -y --default-toolchain stable
echo 'source "$HOME/.cargo/env"' >> ~/.zshrc   # 以後のシェルで cargo に PATH が通る
source "$HOME/.cargo/env"                       # 現在のシェルにも反映

公式インストーラーの場合:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source "$HOME/.cargo/env"

初回はアイコンも生成しておきます(src-tauri/icons/ が空のままだと bundle に失敗します):

npx tauri icon path/to/source-1024.png

リポジトリには仮の青系プレースホルダーアイコンが既に入っています。本番用のアイコンに差し替える際にこのコマンドを使ってください。

開発・ビルド:

npm run tauri:dev    # ネイティブウィンドウで起動
npm run tauri:build  # macOS は .dmg、Windows は .msi/.exe を生成

成果物の出力先:

  • macOS: src-tauri/target/release/bundle/dmg/ および .../macos/
  • Windows: src-tauri/target/release/bundle/msi/

配布時の注意(署名なしビルド)

  • macOS Gatekeeper: 受け取った人は初回のみ Finder で .app右クリック → 開く を実行する必要があります
  • Windows SmartScreen: 「詳細情報」→「実行」で起動できます
  • 対外配布時は Apple Developer Program での公証 (notarytool) と、Windows のコードサイニング証明書を準備してください

CI ビルド済みバイナリ

main への push、PR、手動トリガーで GitHub Actions が macOS (Universal) と Windows (x64) のバイナリをビルドします。

  • 任意のビルドから取得: Actions タブ で対象の run を開き、ページ末尾の Artifacts セクションから zip をダウンロード(space-remover-macos-universal / space-remover-windows-x64)。保持期間 14 日。
  • タグから Release を作る: git tag v0.1.0 && git push origin v0.1.0 を打つと、CI が完了後にドラフト Release を作成しバイナリを添付します。GitHub の Releases 画面で内容確認 → publish。

テスト

npm test          # vitest 一回実行
npm run test:watch

ディレクトリ構成

src/
  App.svelte           # UI
  lib/
    format.ts          # 整形ロジック(Web / Tauri 共通)
    format.test.ts
    clipboard.ts       # Tauri / Web 抽象化
src-tauri/             # Tauri 2 のネイティブシェル

Top categories

Loading Svelte Themes