Javascript 是否可以从网页包中的文件名中删除特殊字符?
长话短说,我不能在资产文件名中使用某些字符,如连字符。我没有通过网页包文档来分析是否可以使用正则表达式或类似的东西重命名文件,这样我就可以从我不控制源文件名的第三方软件包中去掉任何连字符 我的超级天真的例子如下:Javascript 是否可以从网页包中的文件名中删除特殊字符?,javascript,webpack,dynamics-crm,Javascript,Webpack,Dynamics Crm,长话短说,我不能在资产文件名中使用某些字符,如连字符。我没有通过网页包文档来分析是否可以使用正则表达式或类似的东西重命名文件,这样我就可以从我不控制源文件名的第三方软件包中去掉任何连字符 我的超级天真的例子如下: { test: /\.(ttf|eot|woff|woff2)$/, loader: `url-loader?limit=${ASSETS_LIMIT}&name=fonts/[name.replace(/-/)].[ext]` } 有人知道这是否可能,或者如
{
test: /\.(ttf|eot|woff|woff2)$/,
loader: `url-loader?limit=${ASSETS_LIMIT}&name=fonts/[name.replace(/-/)].[ext]`
}
有人知道这是否可能,或者如何达到这一要求吗?谢谢 这个谜题的答案似乎可以在
CustomInterpoleName
loader选项中找到。具有webpack@v3.4.1下面是我删除连字符的最终结果
这是关键新闻:
plugins: [
// ... other plugins ...
new webpack.LoaderOptionsPlugin({
options: {
customInterpolateName: (loaderContext) => {
return loaderContext.replace(/-/g, '');
}
}
})
]
这里有一个更完整的示例来提供一些上下文(注意:.css
被有意地附加到字体文件名中,作为Dynamics CRM中另一个web资源名称限制的解决方法):
这对您有帮助吗?这与Dynamics CRM有关吗?如果没有,可能会删除标记…@Aron是的,Dynamics CRM限制了文件名。谢谢。您是否正在将这些文件作为web资源加载到CRM中?@Unlockedluca似乎无法使用底层的
loader utils
的regExp
选项获取任何内容。我的构建将达到95%(发射),然后在通常需要15-20秒的构建上冻结至少5-10分钟。谢谢你!
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, '');
}
}
})
]
};