使用TerserPlugin时,如何像BannerPlugin一样在顶部添加横幅?

时间:2019-07-25 08:32:01

标签: webpack

我想在minify之后在代码顶部添加一些信息,例如版本。

optimization: {
    minimizer: [
      new TerserPlugin({
        cache: true,
        parallel: true,
        sourceMap: false,
        terserOptions: {
          output: {
            comments: false
          }
        }
      })
    ]
  }

3 个答案:

答案 0 :(得分:0)

使用“前同步码”选项。

optimization: {
minimizer: [
  new TerserPlugin({
    cache: true,
    parallel: true,
    sourceMap: false,
    terserOptions: {
      output: {
        preamble: "/* HEADER */"
        comments: false
      }
    }
  })
]
}

答案 1 :(得分:0)

对于想知道如何使用BannerPlugin做到这一点的任何人,可以将TerserPlugin配置为使用正则表达式保留特定项目所需的任何内容。例如法律/许可等。

在要包括的BannerPlugin文本中,向regex添加一些内容,以便将其保留在生成的文件中。例如,横幅文字可能类似于:@banner My banner message

保留的TerserPlugin配置如下所示:

            new TerserPlugin({
                terserOptions: {
                    output: {
                        comments: /@banner/i
                    }
                },
                extractComments: false
            })

可以随时查看TerserPlugin文档中有关保留注释的信息,那里还有其他示例。

答案 2 :(得分:0)

有一个与此类似的较新问题,我刚刚发布了可能的解决方案 - https://stackoverflow.com/a/67241531/1979530 - 没有检查是否存在较旧的问题。

要点是你不能,或者至少不能以一种优雅的方式 - BannerPlugin 在编译时挂钩,一个人应该在发射时挂钩。查看 BannerAfterMinimizePlugin 示例并按照您的意愿实施。