Got*_*bbs 5 javascript dynamics-crm webpack
长话短说,我的资产文件名中不能有像连字符这样的字符.我没有运气解析通过webpack文档解析是否可以使用正则表达式或类似的东西重命名文件,所以我可以从第三方包中删除任何连字符,我不控制源文件名.
我的超级天真的例子是这样的:
{
test: /\.(ttf|eot|woff|woff2)$/,
loader: `url-loader?limit=${ASSETS_LIMIT}&name=fonts/[name.replace(/-/)].[ext]`
}
Run Code Online (Sandbox Code Playgroud)
有谁知道这是否可能或者如何达到这个要求?谢谢!
这个谜题的答案似乎可以在customInterpolateName加载器选项中找到。使用 webpack@v3.4.1 以下是我删除连字符的最终结果。
这是关键的花絮:
plugins: [
// ... other plugins ...
new webpack.LoaderOptionsPlugin({
options: {
customInterpolateName: (loaderContext) => {
return loaderContext.replace(/-/g, '');
}
}
})
]
Run Code Online (Sandbox Code Playgroud)
下面是一个更完整的示例,可提供一些上下文(注意:.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, '');
}
}
})
]
};
Run Code Online (Sandbox Code Playgroud)