【问题标题】:Webpack plugin to modify a file before and after compilation用于在编译前后修改文件的 Webpack 插件
【发布时间】:2017-12-12 22:59:59
【问题描述】:

我正在尝试构建一个 webpack 插件,它做一件简单的事情,在 webpack 编译所有内容之前替换文件中的字符串,并在编译后将该字符串放回。

配置如下所示:

{
   files: ['myFile.js'],
   replace: 'myString'
}

基本上我不希望 webpack 看到 myString,所以我用一些唯一的字符串替换它,然后在 webpack 编译完所有内容后将 myString 放回去。 this answer 中命名的插件/加载器不适合我的用例。

我认为不需要加载器,因为我知道要更改哪些文件,所以我不需要分析每个文件。

我已经阅读了关于插件的文档,但我仍然有点迷茫,并且可能正在做一个非常低效的插件。也许有插件经验的人可以指导我。

【问题讨论】:

    标签: webpack webpack-plugin


    【解决方案1】:

    我在链接的答案中没有看到string-replace-webpack-plugin。我们使用它来替换需要根据它们部署到的环境进行更改的字符串。您可以使用test 键来限制包含您要更改的字符串的文件名。

    自述文件中的示例:

    loaders: [
         // configure replacements for file patterns 
         { 
            test: /index.html$/,
            loader: StringReplacePlugin.replace({
                replacements: [
                    {
                        pattern: /<!-- @secret (\w*?) -->/ig,
                        replacement: function (match, p1, offset, string) {
                            return secrets.web[p1];
                        }
                    }
                ]})
            }
    ]
    

    我们做一些简单的事情,比如:

    {
        pattern: /_GOOGLE_ID_//ig,
        replacement: function (match, p1, offset, string) {
            return 'my-actual-google-id-for-this-env';
        }
    }
    

    【讨论】:

    • string-replace loader 不同于 string-replace-webpack
    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 2016-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2014-12-29
    • 1970-01-01
    • 2016-08-16
    相关资源
    最近更新 更多