webpack 入口html页面和自定义打包生成的html关系

这是我的文件目录结构

clipboard.png
这是配置文件 里面有自定义生成html文件

var path = require("path");
var CleanWebpackPlugin = require('clean-webpack-plugin');
var HtmlWebpackPlugin = require('html-webpack-plugin');
var webpack = require('webpack'); // 引入 webpack 便于调用其内置插件

// console.log(CleanWebpackPlugin);

module.exports = {
  devtool: 'inline-source-map',
    devServer: {
        contentBase: path.resolve(__dirname, 'dist/js'),
        compress:true,
        port:9000,
        host:'127.0.0.1',
        hot: true, // 告诉 dev-server 我们在用 HMR
        hotOnly: true, // 指定如果热加载失败了禁止刷新页面 (这是 webpack 的默认行为),这样便于我们知道失败是因为何种错误
        inline:true,

    },
    entry: {
        print:'./src/js/print.js',
        index:'./src/js/index.js'
    },
    module:{
          rules:[
            {
                test:/\.css$/,
                use:['style-loader','css-loader']
            },
        ]
    },
    plugins: [
      new CleanWebpackPlugin(['dist']),
      new HtmlWebpackPlugin({
            title: 'Output Management',
            inject:'head',
            filename:'index.html',
            template:'index.html'
      }),
        new webpack.NamedModulesPlugin(),
        new webpack.HotModuleReplacementPlugin()
    ],
    output: {
        path: path.resolve(__dirname,'./dist'),
        filename: '[name].bundle.js',
        hotUpdateChunkFilename: 'hot/hot-update.js',  //指定热替换补丁js文件和json描述文件生成路径 ,每次文件变化都会生成一次
        hotUpdateMainFilename: 'hot/hot-update.json'

        // chunkFilename:'[name].bundle.js',
    },
};

当我根目录下的html文件为空时打包生成的dist/index.html 是这样的

<head><script type="text/javascript" src="print.bundle.js"></script><script type="text/javascript" src="index.bundle.js"></script></head>

当我改变根目录下的HTML 为


 <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>test</title>
    </head>
    <body>
        <script src="./src/js/index.js"></script>
    </body>
    </html>

生成的html这样的

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>test</title>
<script type="text/javascript" src="print.bundle.js"></script><script type="text/javascript" src="index.bundle.js"></script></head>
<body>
    <script src="./src/js/index.js"></script>
</body>
</html>

两者有什么关联?

阅读 5.7k
1 个回答

HTML 文件不是由入口引入的,而是由 HtmlWebpackPlugin 生成的。建议你研究下你 webpack 配置里 plugins 部分的 HtmlWebpackPlugin,并参考它的 官方文档

希望对你有帮助

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题