2017-02-27 98 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这条管线。