我有一个问题,当我安装整个Maven模块时,Maven + frontend-maven-plugin和webpack不能很好地结合在一起;简单地说,Webpack htmlwebpackPlugin在我第一次安装Maven模块时不会注入捆绑的js / css文件,出于某种原因,即使模板是这样提供的:
new HtmlWebpackPlugin({
template : '../resources/public/index.html',
filename : 'index.html',
inject : 'body',
})
但是,如果我在安装整个Maven模块后手动运行frontend-maven-plugin
,它实际上会注入正确的文件,这是一种相当奇怪的行为。
要解决这个问题,我想知道是否有一种手动方式以某种方式在我自己的index.html
模板中注入这些捆绑文件(我只有三个; 1个css,2个js文件)和chunkhash?这将使构建更加一致。
我的webpack.config.js
的剪辑 - 正如您所看到的,如果我们不在dev中,我们会将chunkhash添加到文件名中。
"use strict";
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');
let path = require('path');
let webpack = require("webpack");
const PATHS = {
build: path.join(__dirname, '../../../target', 'classes', 'public'),
};
const env = process.env.NODE_ENV;
let isDev = false;
if(env == "dev"){
isDev = true;
}
console.log(`Dev environment: ${isDev}`);
module.exports = {
entry: {
main: './js/index.jsx',
vendor: [
"react","react-dom","axios",
"react-table", "mobx", "mobx-react", "mobx-utils", "lodash"],
},
output: {
path: PATHS.build,
filename: `bundle.${isDev ? '' : '[chunkhash]'}.js`
},
plugins: [
new webpack.optimize.CommonsChunkPlugin({name: "vendor", filename: `/static/js/vendor.bundle.${isDev ? '' : '[chunkhash]'}.js`}),
new ExtractTextPlugin(`/static/css/[name].${isDev ? '' : '[chunkhash]'}.css`),
new HtmlWebpackPlugin({
template : '../resources/public/index.html',
filename : 'index.html',
inject : 'body',
})
],
module: {
loaders: [
// Bunch of loaders
]
},
};
答案 0 :(得分:0)
我解决了 - 问题基本上就是Maven / Spring会在我的目标文件夹外的resources/public
中使用Index.html(我用作模板)并在目标文件夹中覆盖它 - 基本上覆盖了来自webpackHTMLplugin
的输出,在这种情况下具有逻辑意义。
我在index.html
中没有任何resources/public
文件解决了这个问题,但只是在webpack所在的src文件夹中有一个template.html
。因此,Maven / Spring不会使用空模板覆盖输出。