【问题标题】:A clean way to loop HTMLWebpackPlugin with Webpack?一种用 Webpack 循环 HTMLWebpackPlugin 的干净方法?
【发布时间】:2019-03-15 17:29:21
【问题描述】:

我正在使用带有 HTMLWebPackPlugin 的 Webpack 4。我目前正在处理近 30 个不同的页面,并且正在向前推进。这是我在代码中的示例...

        new HTMLWebpackPlugin({
            template: './src/game11/index.html',
            mViewPort: 'width=device-width, initial-scale=1.0',
            favicon: './src/game11/media/favicon-16x16.png',
            title: 'Game 11 Training',
            filename: 'game11.htm',
            chunks: ['game11']
        }),
        new HTMLWebpackPlugin({
            template: './src/game12/index.html',
            mViewPort: 'width=device-width, initial-scale=1.0',
            favicon: './src/game12/media/favicon-16x16.png',
            title: 'Game 12 Training',
            filename: 'game12.htm',
            chunks: ['game12']
        }),

到目前为止,我的 webpack.config.js 文件中有 30 个。但我更愿意做这样的事情......

 ['game11','game12','something-else','etc'].forEach((event) => {
       new HtmlWebpackPlugin({
           template: './src/${event}/index.html',
           mViewPort: 'width=device-width, initial-scale=1.0',
           favicon: './src/${event}/media/favicon-16x16.png',
           title: '${event} Training',
           filename: '${event}.htm',
           chunks: ['${event}']
       }),
   }),

上面的代码不起作用,它只是一个草图。但是今天是否有可能在不添加额外插件或修改我的输出的情况下做类似的事情?我只是想添加数组值,它会自己创建一个新实例。

非常感谢!

【问题讨论】:

  • 根据您的想法,您可以改用Array.prototype.map['game11','game12','something-else','etc'].map((event) => { return new HtmlWebpackPlugin({...
  • 爱它!!!我不知道那存在。但即使我使用它,我将如何处理在循环过程中使用逗号分隔的实例。这是我不知道如何处理的事情之一......

标签: javascript webpack-4 html-webpack-plugin


【解决方案1】:

按照您在问题中建议的相同逻辑,您可以使用map 而不是forEach 来构建插件数组,如下所示:

webpack.config.js

{
  plugins: [
    new MiniCSSExtractPlugin(),
    ...['game11', 'game12', 'something-else', 'etc'].map((event) => {
      return new HtmlWebpackPlugin({
        template: `./src/${event}/index.html`,
        mViewPort: `width=device-width, initial-scale=1.0`,
        favicon: `./src/${event}/media/favicon-16x16.png`,
        title: `${event} Training`,
        filename: `${event}.htm`,
        chunks: [`${event}`]
      })
    })
  ]
}

【讨论】:

  • 当我运行 npm start 时,我从终端收到以下错误 - “无效的配置对象。Webpack 已使用与 API 架构不匹配的配置对象进行初始化......”跨度>
  • 感谢您的更新!通过该设置,我如何还包括新的 MiniCSSExtractPlugin() 和新的 webpack.ProvidePlugin() 作为附加插件?
  • @klewis 抱歉,我在插件周围多了一个 []
  • 好的!我认为它现在应该可以工作了!除非您的节点版本不支持 ... 扩展运算符,否则请告诉我是否是这种情况。
  • 感谢兄弟没有放弃我。它现在无法理解 ${event}。我想知道 webpack 中是否有启用 Template Literals 的设置。但我现在能够使用加号和变量名的经典表示法,而且它有效!
猜你喜欢
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 1970-01-01
  • 2021-03-28
  • 2023-03-05
  • 2013-03-18
  • 1970-01-01
  • 2021-07-11
相关资源
最近更新 更多