使用Django进行Webpack设置

时间:2018-04-05 23:51:38

标签: django webpack django-webpack-loader

我通过django-webpack-loader通过khrplatform.h处理Django中的Vue应用程序,在本地运行我可以通过在base.html文件中使用以下内容来使其工作:

{% load render_bundle from webpack_loader %}
...
...
{% render_bundle 'app' %}

然而,在生产中,这不起作用 - 我相信因为webpack生产配置使用CommonChunksPlugin将包分成appmanifestvendor

网上没有太多关于将Webpack与Django合并的文档 - 我想知道是否有办法在Django模板中包含所有块。

2 个答案:

答案 0 :(得分:5)

问题最终是由于代码分裂造成的。在dev中,创建了一个JS文件,但在生产配置中,Webpack CommonChunksPlugin被配置为将应用程序拆分为3个文件(清单,供应商和应用程序)。

此解决方案并不理想,可能无法很好地扩展,但通过在Django模板中放置条件标记,我能够正确引用必要的文件。

{% if STAGE or PRODUCTION %}
  {% render_bundle 'vendor' 'js' %}
  {% render_bundle 'manifest' 'js' %}
{% endif %}

{% render_bundle 'app' 'js' %}

答案 1 :(得分:1)

您是否编辑了settings.py以指向捆绑目录?

APP_DIR = os.path.join(BASE_DIR, 'app')
WEBPACK_LOADER = {
    'DEFAULT': {
        'BUNDLE_DIR_NAME': 'dist/'
    }
}

STATICFILES_DIRS = (
    os.path.join(APP_DIR, 'assets'),
)

然后使用HtmlWebpackPlugin指向块? https://github.com/jantimon/html-webpack-plugin/blob/master/README.md#writing-your-own-templates

plugins: [
    new HtmlWebpackPlugin({
      template: 'static/app/index.html'
    }), 
]