0

grunt-string-replaceデプロイ中に、開発環境の URL をすべて本番環境の URL に置き換えるために、Grunt を使用しています。と を変数として保存しており、devRootそれらstageRootを使用して置換を適用したいと考えています。

私は2つの異なるアプローチを試みました:

  1. パターンとして RegExp を使用すると完全に機能しますが、RegExp 内で文字列補間を使用できないためdevRoot、パターンに my を動的に追加することはできません。そのため、RegExp をオブジェクト プロパティに直接割り当てたり、RegExp を返す関数を割り当てたりしましたが、まったく機能しませんでした。

  2. 私の置換はかなり簡単なので、最初のアプローチをやめて、次のように文字列で置換を使用することにしました。

    'string-replace': {
         rootUrl: {
              options: {
                  replacements: [{
                      pattern: '<%= devRoot %>',
                      replacement: '<%= stageRoot %>'
                  }]
              }
          }
    }
    

これは機能しますが、私のパターンの最初の出現だけを置き換えます。私の質問は次のとおりです。大文字と小文字を区別しないグローバルな置換を部分文字列で行う方法はありますか? RegExpgiオプションの機能と同様です。

別の方法:補間された RegExp をこのオブジェクト プロパティに渡すにはどうすればよいですか?

4

2 に答える 2

0

それが役立つかどうかはわかりませんが、関数を使用せずに正規表現パターンを使用して単語のすべてのインスタンスを置き換えることができます。/<%= devRoot %>/ig を使用するだけで、うまく機能します!

于 2014-04-18T05:03:00.580 に答える