2011-04-02 31 views
13

Tôi đang sử dụng Sphinx để tài liệu một trong các dự án của mình và tôi muốn xem trước các thay đổi trong trình duyệt của mình. Tôi muốn có thể lưu một số thay đổi đối với tệp .rst và có thể làm mới ngay trình duyệt của mình và xem các thay đổi.Tự động xây dựng tài liệu Sphinx khi tệp nguồn thay đổi

Về bản chất tôi muốn tự động thực thi make html bất cứ khi nào một trong các tệp .rst bị thay đổi.

Trả lời

0

Bạn có thể tạo một macro trong bạn soạn thảo yêu thích đó lưu file và mở nó trong trình duyệt của bạn, bất kỳ soạn thảo văn bản có thể làm (Geany, gedit, emacs, vi, notepad ++ ...)

+1

Không phải là một ý tưởng tồi ... tuy nhiên tôi muốn một thứ gì đó cầm tay hơn. Tôi thực sự muốn có thể chỉ chạy 'make html --auto-rebuild' –

+0

, bạn luôn có thể viết một kịch bản để thực hiện điều đó – P2bM

3

Nếu bạn' trên một hệ thống * nix, bạn có thể sử dụng inotify để theo dõi các sự kiện hệ thống tập tin và các hành động kích hoạt.

Ví dụ, trên ubuntu,

apt-get install inotify-tools 

Sau đó chạy một kịch bản như thế này để lắng nghe cho các sự kiện trong một trao dir

while true 
    do 
    inotifywait -r -e modify -e move -e create -e delete /tmp/docs | while read line 
     do 
     echo "file changed; time to run make html" 
     done 
    done 
8

Jacob Kaplan-Moss has a good solution:

pip install watchdog 
watchmedo shell-command \ 
      --patterns="*.rst" \ 
      --ignore-pattern='_build/*' \ 
      --recursive \ 
      --command='make html' 

Lưu ý, thay đổi mẫu để phù hợp với hậu tố của bạn. Jacob sử dụng * .txt, nhưng tôi cần thay đổi nó thành * .rst.

+0

Nếu bạn sử dụng Firefox, bạn có thể cài đặt Auto Reload add-on. – swietyy

+0

Điều này làm việc cho tôi. Tôi đã thay đổi lệnh 'make html' thành 'make html && xvkbd -window Firefox -text "\ Cr"' để tải lại tự động. –

17

Bạn có thể sử dụng sphinx-autobuild.

Nó rất dễ dàng để sử dụng, ví dụ:

sphinx-autobuild docs docs/_build/html 

hoặc, nếu bạn có một xây dựng dir riêng biệt,

sphinx-autobuild source build/html 

Nó cũng sẽ tự động khởi tạo một refresh trang trong trình duyệt.

Các vấn đề liên quan