2017-02-27 136 views
2

我正在開發一個web前端,前端爲React,後端爲Django。我使用Webpack來觀察React應用程序的更改和捆綁代碼。可以manage.py runserver執行npm腳本嗎?

的問題是,我同時運行兩個命令,一個用於反應,另一個用於Django的:

webpack --config webpack.config.js --watch 
./manage.py runserver 

有什麼辦法來定製runserver命令執行NPM腳本,像npm run start:dev?當您使用Node.js作爲後端平臺時,您可以執行類似的工作,如npm run build:client && npm run start:server

+0

你有沒有看過咕嚕聲或咕嘟咕嘟聲來執行這兩項任務? – turbotux

回答

0

您不應該混淆內置的管理命令,但您可以自己創建:https://docs.djangoproject.com/en/1.10/howto/custom-management-commands/

在你的位置上,我將使用runserver並創建一個來運行你的自定義(在這種情況下爲npm)腳本,即os.execvp

理論上你可以運行兩個並行的子進程,一個執行例如django.core.management.execute_from_command_line,另一個運行你的腳本。但它會使使用工具如pbd不可能(這使得工作非常困難)。

我這樣做的方式是我利用Docker和Docker組合。然後當我使用docker-compose up -d我的數據庫服務時,npm腳本,redis等在後臺運行(單獨運行runserver,但那是另一個話題)。

1

如果您已經在使用webpack和django,可能您可能會對使用webpack-bundle-tracker和django-webpack-loader感興趣。

基本上,webpack-bundle-tracker會在每次構建bundle時創建一個stats.json文件,而django-webpack-loader會監視那些stats.json文件以重新啓動dev服務器。這個堆棧允許分離服務器和客戶端之間的關係。

還有a couple的帖子在那裏explaining這條管線。