javascript - 是否可以从 webpack 的文件名中去除特殊字符?

标签 javascript webpack dynamics-crm

长话短说,我不能在 Assets 文件名中使用某些字符,例如连字符。我没有运气好通过 webpack 文档解析来确定是否可以使用正则表达式或类似的东西重命名文件,所以我可以从我不控制源文件名的第 3 方包中删除任何连字符。

我 super 天真的例子是这样的:

{
    test: /\.(ttf|eot|woff|woff2)$/,
    loader: `url-loader?limit=${ASSETS_LIMIT}&name=fonts/[name.replace(/-/)].[ext]`
}

有谁知道这是否可能或如何满足这一要求?谢谢!

最佳答案

这个谜语的答案似乎可以在 customInterpolateName 加载器选项中找到。对于 webpack@v3.4.1,下面是我删除连字符的最终结果。

这是关键的花絮:

plugins: [
    // ... other plugins ...
    new webpack.LoaderOptionsPlugin({
        options: {
            customInterpolateName: (loaderContext) => {
                return loaderContext.replace(/-/g, '');
            }
        }
    })
]

这里有一个更完整的例子来提供一些上下文(注意:.css 被有意附加到字体文件名中作为 Dynamics CRM 中另一个网络资源名称限制的解决方法):

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, '');
                }
            }
        })
    ]
};

关于javascript - 是否可以从 webpack 的文件名中去除特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45578418/

相关文章:

使用 Webpack 的 Javascript 模块

javascript - Bootstrap 导航栏中的链接

javascript - 无法将 Sass 变量导出到 Javascript

reactjs - 错误: Final loader didn't return a Buffer or String

dynamics-crm - mscrm 动态中的自定义工作流与可配置工作流

dynamics-crm - 自定义工作流事件不更新输入参数

javascript - jQuery 插件 - 内联 CSS 或外部样式表?

javascript - 按钮显示进度

javascript - 在不使用 .flat() 的情况下展平数组;

c# - 如何在 Dynamics CRM 中调用 create 之前删除重复项?