2

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

配置如下所示:

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

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

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

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

4

1 回答 1

3

我在链接的答案中没有看到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';
    }
}
于 2018-01-28T22:05:09.807 回答