使用webpack替换复制文件上的文本

爆炸药

我有一个build.config.xml像这样的字符串$FABRIC_API_KEY我想用process.env.FABRIC_API_KEY一个新文件替换它config.xmlbuild.config.xml应该保持不变)。我尝试使用CopyWebpackPlugin,但似乎无法执行任何操作。

var CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = {
  ...    
  resolve: {
    extensions: ['.ts', '.js', '.json', '.xml'],
    ...

  plugins: [
    ionicWebpackFactory.getIonicEnvironmentPlugin(),
    new CopyWebpackPlugin([{
      from: 'build.config.xml',
      to: 'config.xml',
      transform: function (content) {
        content = content
          .replace('$FABRIC_API_SECRET', process.env.FABRIC_API_SECRET)
          .replace('$FABRIC_API_KEY', process.env.FABRIC_API_KEY);

        return content;
      },
    }]),
  ],
};

该文件会执行其他操作(生成离子文件),并且其他所有操作都会按预期进行。没有错误或任何东西,config.xml也不会创建。

如何复制文件并替换其中的字符串?我愿意使用其他插件。

迭戈·科兰托尼

也许因为OP许多事情发生了变化,但transform该功能复制的WebPack-插件确实允许修改文件内容。不过,content传递给函数参数是一个缓冲区,因此可以像这样实现一个简单的字符串替换(注意对的调用toString()):

new CopyWebpackPlugin([{
  from: 'build.config.xml',
  to: 'config.xml',
  transform(content) {
    return content
      .toString()
      .replace('$FABRIC_API_SECRET', process.env.FABRIC_API_SECRET)
      .replace('$FABRIC_API_KEY', process.env.FABRIC_API_KEY);
  },
}])

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章