LoginSignup
2
2

More than 5 years have passed since last update.

grunt-connect-rewriteを使うときにハマったこと

Last updated at Posted at 2014-02-10

フロントの開発とサーバサイドの開発とで、実装上パスが異なってしまう場合が発生してしまったため、grunt-connect-rewrite(https://github.com/viart/grunt-connect-rewrite )を使ってみたのですが、そのときハマってしまったのでメモ。

忙しい人のための要約

grunt-connect-rewriteのfromを記述するときにエスケープシーケンスを使いたい場合は、バックスラッシュを二重に記述する。

{
    from: 'path\\?hoge=(.*)$',
    to: '/$1.html'
}

要約ここまで

解説

rulesを記述するときは、下記のとおりに書くと思うのですが、

Gruntfile.js
connect: {
    rules: [
        {
            from: 'path'
            to: 'path'
        }
    ]
}

このfromは内部的に正規表現で処理されているため、正規表現が当然使えます。

例えば、

{
    from: '/js/(.*)$',
    to: '/js/new/$1'
}

という感じ。このときは、/js/ディレクトリ以下のファイルを、ファイル名やディレクトリ構成をそのままに、/new/フォルダ以下に転送する、という感じになります。

ところで普通/はエスケープするところですが、上記ではエスケープしていません。このへんは内部的にうまいことエスケープしているらしいです。

しかし、今回?を使おうと思ったところ、そこでエラーが発生。エスケープをちゃんと書けばいいのかな?と思って

{
    from: 'path\?hoge=(.*)$',
    to: '/$1.html'
}

みたいに変更してもエラーが発生。悩んでいろいろ試した末、

{
    from: 'path\\?hoge=(.*)$',
    to: '/$1.html'
}

という風に二重にバックスラッシュをつけてエスケープしてみたところ、正常にエスケープできました。

内部的にエスケープを自動で付加してるのが原因なのかな。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2