Grunt:使用grunt-text-replace时替换通配符值

时间:2015-05-19 00:09:30

标签: regex gruntjs

我没有正则表达式大师,而且我非常确定正则表达式是这个例子中所需要的。

我目前有一个像这样的文本替换任务:

  configSeed: {
    src: ['src/*/local/app-config.js'],
    overwrite: true,
    replacements: [
      {
        from: 'var CONFIG_SEED_STRING = null;',
        to: 'var CONFIG_SEED_STRING = "{"some_stringified_dynamic_json":"values"}";'
      }
    ]
  }

第一次保存配置文件时工作正常,上面的字符串被替换。

但是,一旦替换了字符串,对配置的进一步更改就不会应用替换,因为显然不再找到null

null是我的通配符值所在的位置,值可以是null(最初)或后续替换有效的JSON字符串。

如果我对所需的通配符的假设是正确的,那么在保存时会触发递归吗?或者Grunt是否有针对这种情况的内置保护? [编辑:我通过用相同的值替换字符串来测试这一点,不会发生递归。]

因此,假设在我想要的地方使用通配符是安全的,我可以请求替换正则表达式值吗?

替代解决方案也很受欢迎,例如我的代码库不变,我可以完全替换代码,如果可能的话。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

哦,我真的做到了,真是一种感觉。在再次对正则表达式进行了一些痛苦的阅读之后:

  configSeed: {
    src: ['src/*/local/app.js'],
    overwrite: true,
    replacements: [
      {
        from: /var CONFIG_SEED_STRING = '[^']*'/g,
        to: 'var CONFIG_SEED_STRING = \'{"foo":"bar"}\''
      },
      {
        from: 'var CONFIG_SEED_STRING = null',
        to: 'var CONFIG_SEED_STRING = \'{"foo":"bar"}\''
      }   
    ]
  }

不完美,因为我有两个来自/ tos,但它在{em>单引号 null的字符串值之间捕获CONFIG_SEED_STRING和有效的JSON数据。

写正则表达式的即时奖励时间!我允许自己15分钟的Youtube工作。