Django的Webpack设置

Tob*_*oby 5 django webpack django-webpack-loader

我通过django-webpack-loader在Django中使用Vue应用程序工作,在本地运行,我可以通过在base.html文件中使用以下命令使其工作:

{% load render_bundle from webpack_loader %}
...
...
{% render_bundle 'app' %}
Run Code Online (Sandbox Code Playgroud)

然而,在生产中这是行不通-我相信,因为生产的WebPack配置使用CommonChunksPlugin分裂成捆appmanifestvendor

在线上没有太多文档将Webpack与Django合并-我想知道是否有一种方法可以将所有块都包含在Django模板中。

Tob*_*oby 6

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

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

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

{% render_bundle 'app' 'js' %}
Run Code Online (Sandbox Code Playgroud)


Leo*_*Mak 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'),
)
Run Code Online (Sandbox Code Playgroud)

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

plugins: [
    new HtmlWebpackPlugin({
      template: 'static/app/index.html'
    }), 
]
Run Code Online (Sandbox Code Playgroud)