Webpack 2+: Como aplicar carregadores diferentes para arquivos com a mesma extensão?

Aqui está o meu caso de uso: a maioria dos svgs deve estar embutida. Então, eu configurei uma regra como esta:

{test: /\.svg$/, use: "svg-inline-loader"},

Em alguns casos, eu apenas quero o URL de um svg em vez de incluí-lo. No webpack 1.x, eu os exigi assim:require('path/to/file.svg?external').

Aqui está a regra correspondente:

{test: /\.svg\?external$/, use: "file-loader!image-webpack-loader"},

Parece que o webpack 2 não inclui o? parte mais quandotestpara uma regra, já que apenas a primeira regra está sendo aplicada atudo meus svgs após a migração.

Existe uma maneira de contornar isso? Talvez exista uma estratégia diferente de como aplicar diferentes conjuntos de carregadores para arquivos da mesma extensão quandorequireing eles?

PS: Estou ciente de que poderia exigir o arquivo assim:require('!file-loader!image-webpack-loader!path/to/file.svg') mas meus carregadores são um pouco mais complexos que isso e não quero repetir a configuração o tempo todo.

PSS: isso também parece não funcionar (ainda aplica apenas a primeira regra)

{test: /\.svg$/, use: "svg-inline-loader", exclude: /\?external/},
{test: /\.svg$/, use: "file-loader?!image-webpack-loader", include: /\?external/}

questionAnswers(3)

yourAnswerToTheQuestion