[英]Webpack & HtmlWebpackPlugin: Injection of chunks into custom template doesn't work
I'm using Webpack/HtmlWebpackPlugin with multiple entry points & chunks to compile an AngularJS application.我正在使用带有多个入口点和块的 Webpack/HtmlWebpackPlugin 来编译 AngularJS 应用程序。 I'll need the JS injected somewhere in the middle of the HTML template, so I use
我需要在 HTML 模板中间某处注入的 JS,所以我使用
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
<script src="<%= htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
<% } %>
as described here: https://github.com/jaketrent/html-webpack-template/blob/master/index.ejs .如此处所述: https://github.com/jaketrent/html-webpack-template/blob/master/index.ejs 。 The template get's compiled, but no script-tags are inserted for my chunks.
模板已编译,但没有为我的块插入脚本标签。 What's wrong?
怎么了?
My relevant Webpack configuration [webpack.prod.config.js]:我的相关 Webpack 配置 [webpack.prod.config.js]:
const path = require('path');
const merge = require('webpack-merge');
const webpack = require('webpack');
const common = require('./webpack.base.config.js');
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = merge(common, {
mode: 'production',
output: {
filename: '[name].bundle.min.js',
path: path.resolve(__dirname, 'dist.prod')
},
plugins: [
new HtmlWebpackPlugin({
template: './src-ts-store/landingpage_store.liquid.ejs',
filename: 'landingpage_store.liquid',
base: {href: '/apps/sgp'},
inject: false,/* instead using this: https://github.com/jantimon/html-webpack-plugin/issues/386 , https://github.com/jaketrent/html-webpack-template */
chunks: ['app-store','defaultVendors','dptCommon']
}),
new HtmlWebpackPlugin({
template: './src-ts-admin/landingpage_admin.html.ejs',
filename: 'landingpage_admin.html',
base: {href: '/frontend-admin/'},
inject: false,/* instead using this: https://github.com/jantimon/html-webpack-plugin/issues/386 , https://github.com/jaketrent/html-webpack-template */
chunks: ['app-admin','defaultVendors','dptCommon']
})
]
});
The relevant part of the template [landingpage_admin.html.ejs]模板的相关部分 [landingpage_admin.html.ejs]
<html ng-app="DPT" ng-controller="appController">
<script src="app.environment.var.js"></script>
<link href="plugins/bootstrap-dropdown-removed-typography.css" rel="stylesheet" type="text/css" />
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
<script src="<%= htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
<% } %>
<script src="https://kit.fontawesome.com/b6b551a0d0.js" crossorigin="anonymous"></script>
[...]
The relevant console output相关控制台output
Child HtmlWebpackCompiler:
2 assets
Entrypoint HtmlWebpackPlugin_0 = __child-HtmlWebpackPlugin_0
Entrypoint HtmlWebpackPlugin_1 = __child-HtmlWebpackPlugin_1
[0] ./node_modules/html-webpack-plugin/lib/loader.js!./src-ts-store/landingpage_store.liquid.ejs 2.26 KiB {0} [built]
[1] ./node_modules/html-webpack-plugin/lib/loader.js!./src-ts-admin/landingpage_admin.html.ejs 12 KiB {1} [built]
I have found https://github.com/jaketrent/html-webpack-template/issues/69#issuecomment-376872044 and without truly understanding what is actually going wrong I have changed我发现了 https://github.com/jaketrent/html-webpack-template/issues/69#issuecomment-376872044并且没有真正了解实际出了什么问题,我已经改变了
<% for (var chunk in htmlWebpackPlugin.files.chunks) { %>
<script src="<%= htmlWebpackPlugin.files.chunks[chunk].entry %>"></script>
<% } %>
to the following and it fixed the issue for me:到以下内容,它为我解决了这个问题:
<% for (var chunk in htmlWebpackPlugin.files.js) { %>
<script src="<%= htmlWebpackPlugin.files.js[chunk]%>"></script>
<% } %>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.