用 eclipse 開發 Firefox/Thunderbird Extension

再次聲明,我自己是用 vim 寫 mozilla application,搞 eclipse 純粹只是自 high。

前置作業

要用 eclipse 開發 Mozilla Application,首先需要 WTP (Web Tools Platform)。一樣也是 [help] → [Install New Software], work with 填入 http://download.eclipse.org/webtools/updates,接著安裝最新的 WTP。在撰文時最新的版本是 Web Tools Platform (WTP) 3.1.2。

安裝完畢後,或許你還會有興趣安裝 XulBooster。請到 Sourceforge 下載最新版本的 XulBooster,並且在  [help] → [Install New Software] 按下 Add → Archive,選擇剛下載的 XulBooster 的 zip file 安裝。

開發延伸套件

通常會有兩個狀況:(一)你已經自己有 extension,只是想轉換開發環境為 eclipse。(二)你想要全新開發一個 extension。如果你是第二種狀況,XulBooster 有提供 XUL project 幫你建立簡單的 extension 結構。或是也可以用 Extension Wizard 建立,不過用 Extension Wizard 建立的話,要在自己建立 .project file,在你匯入專案時他才會認得你的 project,請參考 [筆記] 在 eclipse 用 git

如果你是第一種狀況的使用者,同樣的你也要建立 .project file。接下來就可以在 eclipse 開發了。

安裝延伸套件

安裝套件很麻煩。這邊我寫了兩個 script 分別處理 windows 跟 linux 的安裝。EXTENSION_NAME 請自行取代成你的 extension 名稱。使用方式都一樣:

Linux:
./install.sh trxw3c99.default

Windows:
install.bat trxw3c99.default

trxw3c99.default 請改成在你電腦上的目錄名稱。

Linux 版 (Linux 版我多處理了 vim 的暫存檔問題, 刪除 compreg.dat 等問題)

#!/bin/bash

FF\_PROFILE="$HOME/.mozilla/firefox/$1"
FF\_EXT="extensions/EXTENSION\_NAME"

echo "copy files...."
find . -maxdepth 1 -mindepth 1 \\
        ! -name '.git' ! -name '\*.swp' \\
        -printf "\\t%f\\n" -exec cp -r {} $FF\_PROFILE/$FF\_EXT \\;

if \[ -e "$FF\_PROFILE/compreg.dat" \]; then
    echo "remove compreg.dat"
    rm "$FF\_PROFILE/compreg.dat"
fi

echo "delete vim swap files..."
find $FF\_PROFILE/$FF\_EXT -name \*.swp \\
     -printf "\\t%f\\n" -exec rm {} \\;

Windows 版本要有兩個檔案 exculude.txt 跟 install.bat
exclude.txt 裡面指包含一行: .git

install.bat:

xcopy \* %APPDATA%\\Mozilla\\Firefox\\Profiles\\%1\\extensions\\EXTENSION\_NAME /E /Y /EXCLUDE:exclude.txt

在 eclipse 安裝延伸套件

寫好安裝 script 之後,在 eclipse 的安裝就簡單的多。在 [Run] → [External Tools] → [External Tools Configurations] 在 Program 按右鍵選擇 New,取名為 Install。Location 按 Browse Workspace 選擇 install.bat,Working Directory 按 Browse Workspace 選擇你的 extension project。選擇完畢之後應該長這樣:

設定完畢後,按下 toolbar 上面的 選擇 install 就可以安裝了。

相同的如果你想跑 Firefox 也可以用相同的設定方式跑 Firefox :)


讀者回函
讀完本文之後有什麼建議或回饋嗎?請按此在 Twitter 上面分享此文並且提及我,或是透過寄送電子郵件分享你的看法 😎