我編寫了使用lessc將* .less文件轉換爲* .css的bash腳本。 不幸的是,運行來自BaseRunserverCommand的函數只在* .py文件被修改時重新啓動服務器。 我該如何解決這個問題?Django在修改較少文件時運行bash腳本
1
A
回答
1
正確覆蓋code_changed()功能似乎有點困難,所以我決定編寫自己的腳本轉換* .less文件,這些文件被修改或沒有* .css文件。 此腳本在運行reloader_thread():
import sys, time
from subprocess import call
from django.conf import settings
from django.utils import autoreload
from django.core.management.commands.runserver import Command
def convert_less():
status = call([settings.CONVERT_LESS, settings.LESS_DIR, settings.CSS_DIR])
if status != 0:
exit(1)
def reloader_thread():
autoreload.ensure_echo_on()
while autoreload.RUN_RELOADER:
convert_less()
if autoreload.code_changed():
sys.exit(3) # force reload
time.sleep(1)
autoreload.reloader_thread = reloader_thread
Tadeck,感謝您的線索:)
我想,這個問題可以通過編輯BaseCommand.option_list
2
您可以編寫自己的命令從django.core.management.commands.runserver.Command
繼承,覆蓋run()
方法與自己的,它會用自己的autoreload
:
def run(self, *args, **options):
"""
Runs the server, using the autoreloader if needed
"""
use_reloader = options.get('use_reloader')
if use_reloader:
autoreload.main(self.inner_run, args, options)
else:
self.inner_run(*args, **options)
你自己的autoreload
實例,但是,將只需要code_changed()
function來重寫考慮到*.less
和*.css
(或更多)文件。
相關問題
- 1. 修改bash腳本以在讀取文件時排除文本
- 2. 運行BASH腳本文件
- 3. bash腳本,修改一個文件
- 4. bash腳本比較文件
- 5. 修改運行腳本
- 6. 從make文件運行bash腳本
- 7. 從bash腳本文件運行docker-compose
- 8. 快速bash腳本在指定文件夾中運行腳本?
- 9. 在Django運行時修改urlpatterns
- 10. Django在運行時修改DATABASE_HOST
- 11. 在運行時修改.resx文件
- 12. 在bash中運行腳本
- 13. 在運行時創建jrxml文件並在運行時修改
- 14. 修改值在CSV使用bash腳本
- 15. 與bash腳本錯誤比較文件
- 16. 並行運行bash腳本?
- 17. 並行運行bash腳本
- 18. 從bash腳本運行ruby腳本與文件pather參數
- 19. 如何將文件添加到目錄時運行bash腳本?
- 20. 運行時分析文件的bash腳本
- 21. SVN遠程文件發生變化時運行bash腳本
- 22. 新文件目錄時運行bash腳本?
- 23. bash腳本運行從文件的速度比在命令行
- 24. 如何使用Shell腳本修改job.properties文件並運行Oozie腳本?
- 25. 啓動時運行Bash腳本mac
- 26. 如何運行bash腳本時LIUNX
- 27. 創建堆棧時運行bash腳本
- 28. [:缺少`]在bash腳本」
- 29. 運行一個PHP腳本,運行一個運行bash腳本的Python腳本,掛在bash上
- 30. bash腳本比較
它不是一個答案來也解決了,但你考慮使用Django-Compressor(它包含此功能) – YardenST