Python Heroku上的webpack和django:收集前的捆绑
我正在Heroku上构建一个django+react应用程序,使用Python Heroku上的webpack和django:收集前的捆绑,python,node.js,django,heroku,webpack,Python,Node.js,Django,Heroku,Webpack,我正在Heroku上构建一个django+react应用程序,使用django npm,它自动将package.json中的所有模块安装到节点模块dir,然后在python manage.py collectstatic期间将所有内容复制到staticfiles/(在部署期间由Heroku触发) 但是,为了使此配置起作用,我需要在部署前预绑定我的React应用程序,并将其与所有CSS、字体等一起放入我的static文件夹中,以便稍后由collectstatic拾取 但我不想用新的捆绑包版本污染我
django npm
,它自动将package.json
中的所有模块安装到节点模块
dir,然后在python manage.py collectstatic
期间将所有内容复制到staticfiles/
(在部署期间由Heroku触发)
但是,为了使此配置起作用,我需要在部署前预绑定我的React应用程序,并将其与所有CSS、字体等一起放入我的static
文件夹中,以便稍后由collectstatic
拾取
但我不想用新的捆绑包版本污染我的git差异。那么,有没有办法让webpack在部署期间创建一个包
我知道Heroku上有一个release
命令,我可以将我的npm运行build
。但问题是它只在collectstatic
之后才会触发,因此我的包只有在扫描此文件夹后才会在static/
文件夹中创建,并且不会复制到staticfiles
目录。更新:
从2019年3月11日起,不再需要使用bin/pre_compile
。Heroku现在将在Heroku的构建过程中自动调用应用程序的build
脚本(如果在package.json
中定义)。来源:
Original:您可以通过
heroku/python
buildpack公开的(未记录的)pre_compile
hook来实现这一点
在应用程序的顶层添加一个名为bin/pre_compile
的可执行shell文件,它将作为构建过程的一部分
cd我的django应用程序
mkdir-bin
回音/usr/bin/env bash'>>bin/pre\u编译
回显“npm运行构建”>>bin/pre\u编译
chmod+x bin/pre_编译
为什么不在npm构建后在heroku发布命令中重新运行collectstatic。类似于release:npm运行build&&python manage.py collectstatic