如何使用 webpack 将原始静态 html 文件包含到另一个 html 文件中

How to include raw static html file into another html file with webpack

我有一个 header.html 文件

<header>
  <nav>
    ... some code here ...
  </nav>
</header>

我也有一个 index.html 文件,我想在其中包含这个 header.html。

我的 index.html 看起来像这样:

<body>
  ${require('./header.html')}
  <div class="content">
    <!-- some content here -->
  </div>
  <div class="footer">
    <!-- some content here -->
  </div>
</body>

我正在使用这个 webpack.config.js:

const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');

module.exports = {
  entry: ['./src/js/index.js', ...],
  output: {
    path: path.resolve(__dirname, './dist'),
    filename: 'js/index.js'
  },
  module: {
    rules: [
      {
        test: /\.html$/,
        use: ['html-loader']
      }
    ]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/main.html',
      filename: 'main.html'
    })
  ]
};

我试着像这样包含 header.html:

${require('./header.html')}

还有这个:

<%= require('./header.html') %>

尝试使用此行导入 js/index.js 文件:

import header from 'html-loader!../header.html';

...结合这个:

${require('./header.html')}

还有这个:

${require(header)}

但没有任何效果。我只是在 index.html 中以纯文本形式返回我的 ${require ...} 代码,没有包含任何内容。

知道如何包含 header.html 文件吗?

编辑:此答案不再有效 html-loader > 0.5.5

您需要像这样启用 interpolation

  module: {
    rules: [
      {
        test: /\.html$/,
        use: {
          loader: 'html-loader',
          options: {
            interpolate: true
          }
        }
      }
    ]
  },

我的回答来源,this question/answer

请注意,在 html-loader v1.0.0 中删除了插值选项。该解决方案适用于 html-loader v0.5.5 和 ${require('./header.html')}