Webpack 5资产模块在使用手柄加载程序时没有创建图像到dist文件夹,我如何让它输出图像?

wvyml7n5  于 2023-02-16  发布在  Webpack
关注(0)|答案(1)|浏览(129)

这是我的配置文件,我已经尝试与html加载器它的工作正常的.html文件,但我现在试图学习和使用handlebarsjs它的工作不一样.我也尝试使用预处理器选项的html加载器,其中我创建了一个函数来读取.hbs文件,但我一直得到错误.

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

module.exports = {
  entry: './src/index.js',
    plugins: [
    new HtmlWebpackPlugin({
      title: 'Output Management',
            template: './src/index.hbs'
    }),
  ],
    devtool: 'inline-source-map',
    devServer: {
    static: './dist',
        hot: true,
  },
  output: {
    filename: '[name].bundle.js',
    path: path.resolve(__dirname, 'dist'),
        publicPath:'/dist/',
        clean:true,
  },
    mode: 'development',
    module: {
    rules: [
      {
        test: /\.css$/i,
        use: ['style-loader', 'css-loader'],
      },
            {
        test: /\.(png|svg|jpg|jpeg|gif)$/i,
        type: 'asset/resource',
                generator: {
                    filename: 'assets/img/[hash][ext][query]'
                }
      },
            {
        test: /\.hbs$/i,
        use: ['handlebars-loader'],
      },            

    ],
  },
};
nimxete2

nimxete21#

以下解决方案应适用于Webpack 5:

  • webpack.config.js中,对handlebars-loader使用inlineRequires选项:
{
  test: /\.hbs$/i,
  loader: 'handlebars-loader',
  options: {
    inlineRequires: '\/assets\/img\/'
  }
},
  • 在模板文件中:
<img src="./assets/img/image.png" />

handlebars-loader文档中,inlineRequires选项:
定义一个正则表达式,用于标识helper/partial参数中应被内联require语句替换的字符串。
如果资源中有多个子文件夹(例如:/img/audio/video),请使用以下正则表达式:

inlineRequires: \/assets\/(:?img|audio|video)\/,

相关问题