Webpack 排除特定文件

Posted

技术标签:

【中文标题】Webpack 排除特定文件【英文标题】:Webpack Exclude a specific file 【发布时间】:2017-11-06 16:16:52 【问题描述】:

我的webpack.config.prod.js 中有这段代码,我想知道如何排除所有 json,除了特定路径中的一个,如src/configs/configs

exclude: [
  /\.html$/,
  /\.(js|jsx)$/,
  /\.css$/,
  /\.json$/,
  /\.bmp$/,
  /\.gif$/,
  /\.jpe?g$/,
  /\.png$/,
],
loader: require.resolve('file-loader'),
options: 
  name: 'static/media/[name].[hash:8].[ext]',


...

【问题讨论】:

检查这个:github.com/webpack/webpack/issues/2031 【参考方案1】:

根据Webpack documentation,你可以这样做。

exclude: 
  test: [
    /\.html$/,
    /\.(js|jsx)$/,
    /\.css$/,
    /\.json$/,
    /\.bmp$/,
    /\.gif$/,
    /\.jpe?g$/,
    /\.png$/,
  ],
  exclude: [
    'src/configs/configs/your.json'
  ]

【讨论】:

【参考方案2】:

为了使排除工作,我必须转义我要排除的特定文件中的点。下面是从一般规则中排除 favicon.ico 并为其添加特殊规则的示例:

  
    test: /\.(ico|jpg|png|gif|eot|otf|webp|svg|ttf|woff|woff2)(\?.*)?$/,
    exclude: /favicon\.ico$/,
    loader: 'file-loader',
    options: 
      name: 'static/media/[name].[hash:8].[ext]',
    ,
  ,
  // A special rule for favicon.ico to place it into build root directory.
  
    test: /favicon\.ico$/,
    loader: 'file-loader',
    options: 
      name: '[name].[ext]?[hash:8]',
    ,
  ,

【讨论】:

【参考方案3】:

对于 Webpack 5:

  
    test: /\.(png|svg|jpg|jpeg|gif)$/,
    type: 'asset/resource',
  ,
  
    test: /favicon\.ico$/,
    type: 'asset/resource',
    generator: 
      filename: '[name][ext]',
    ,
  ,

【讨论】:

无排除选项

以上是关于Webpack 排除特定文件的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 排除文件夹

工作箱 webpack 插件从预缓存清单中排除文件夹

使用 webpack 为 react-lottie 从主包中排除 JSON 文件

如何从 Webpack 捆绑 JS 文件中排除 style-loaders、css-loader 源代码?

如何从 WebPack 包中排除目录

Webpack - 排除 node_modules 并保留单独的浏览器和服务器管理