【问题标题】:Conditional filename in webpack config outputwebpack 配置输出中的条件文件名
【发布时间】:2016-10-14 05:35:58
【问题描述】:

我当前的 webpack 输出配置如下:

output: {
    path: PATHS.build,
    filename: '/[name].[chunkhash].js',
    chunkFilename: '/[chunkhash].js'
}

但是,我有一个不想添加 [chunkhash] 后缀的条目文件 (custom.js)。我确实想在文件名后添加chuckhash后缀。本质上:

if (name is 'custom') {
    filename: '/[name].js'
} else {
    filename: '/[name].[chunkhash].js'
}

我怎样才能做到这一点?

【问题讨论】:

  • 根据您的限制,最简单的方法可能是只使用多个配置。
  • 你能详细说明一下吗?我目前正在为开发和生产使用两个单独的配置,但我不确定如何根据入口点进行配置
  • 你想什么时候有名字的哈希?在开发或生产环境中?

标签: reactjs webpack webpack-dev-server


【解决方案1】:

来自https://webpack.js.org/configuration/output/#output-filename

module.exports = {

  //...
  output: {
    filename: ({ chunk: { name } }) => {
      return name === 'main' ? '[name].js': '[name]/[name].js';
    },
  }
};

【讨论】:

  • 那是什么版本的 webpack?有限制吗?我试图在路径中使用它(而不是文件名),它只是说“configuration.output.path 应该是一个字符串”,但失败了。
【解决方案2】:

您可以轻松做到这一点(webpack 4.x):

output: {
    filename: '[name].js',
    chunkFilename: (arg) => {
        if (arg.chunk.name == "vendor") {
            return '[name].[chunkhash].js';
        }
        return '[name].js';
    } ,
    publicPath: `/${common.APP_ROOT}/`
},

【讨论】:

【解决方案3】:

根据文档,您只能有一个输出配置。

影响编译输出的选项。输出选项告诉 Webpack 如何将编译后的文件写入磁盘。请注意,虽然 可以有多个入口点,只有一个输出配置是 指定。

所以我猜你现在不能这样做(至少根据文档)。你能详细说明为什么你需要这样的东西吗?

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 2021-01-05
    • 1970-01-01
    • 2016-08-04
    • 2016-03-05
    • 2020-08-11
    • 2016-04-25
    • 2017-11-05
    • 2020-07-17
    相关资源
    最近更新 更多