长话短说,我的资产文件名中不能有像连字符这样的字符。我没有运气解析通过webpack文档解析是否可以使用正则表达式或类似的东西重命名文件,所以我可以从第三方包中删除任何连字符,我不控制源文件名。
我的超级天真的例子是这样的:
{
test: /\.(ttf|eot|woff|woff2)$/,
loader: `url-loader?limit=${ASSETS_LIMIT}&name=fonts/[name.replace(/-/)].[ext]`
}
有人知道这是否可行或者如何达到此要求?谢谢!
答案 0 :(得分:0)
这个谜语的答案似乎可以在customInterpolateName
加载程序选项中找到。使用webpack@v3.4.1,以下是删除连字符的最终结果。
这是关键的花絮:
plugins: [
// ... other plugins ...
new webpack.LoaderOptionsPlugin({
options: {
customInterpolateName: (loaderContext) => {
return loaderContext.replace(/-/g, '');
}
}
})
]
这里有一个更完整的示例来提供一些上下文(注意:.css
有意附加到字体文件名,作为Dynamics CRM中另一个Web资源名称限制的解决方法):
module.exports = {
// ... other config ...
module: {
loaders: [
// ... other loaders ...
{
test: /\.(ttf|eot|woff|woff2)$/,
loader: `url-loader?limit=${ASSETS_LIMIT}&name=fonts/[name].[ext].css`
}
]
},
plugins: [
// ... other plugins ...
new webpack.LoaderOptionsPlugin({
options: {
customInterpolateName: (loaderContext) => {
return loaderContext.replace(/-/g, '');
}
}
})
]
};