2017-11-05 15 views
1

ターゲットファイルへのURLを開くアプリケーション用のビルドシステムを作成したいと思います。例えば、私はプロジェクトファイルcomponents/flower.html上でビルドを実行する場合、それはプロジェクト内のファイルの相対パスを取得するにはどうすればよいですか?

open http://localhost:8080/app/components/flower.html

を実行する必要がありますSTのための変数のリストは、相対パスを持っていません。私が得る最も近いそれは完全なパスが含まれてい

http://localhost:8080/app//dev/myproject/components/flower.html

です。おそらく、/dev/myprojectの部分を削除する簡単な方法はありますか?

これは私がさらにカスタマイズしたいビルド設定です:

"cmd": ["open", "http://localhost:8080/app/${file_path}"]

答えて

0

If we look at the documentation on Build Systems, we see that we can use snippet substitution in the variables used in the build system.変数に建てられたが、非常に我々のニーズを満たしていないとき、これは本当に便利です。

したがって、相対パスを得るためにプロジェクトディレクトリを置き換えることはできません。

$SELECTIONのスニペットを使用して置換をテストする最も簡単な方法は、選択したテキストを変更して、別の名前でファイルを保存したりビルドシステムを実行したりすることを心配する必要がなく、結果を待っています。

代用は正規表現で行われます。スラッシュは特別な意味があるため、エスケープする必要があります。変数名の後にスラッシュを1つ、正規表現パターンの後にスラッシュを1つ、その後にスラッシュを1つ、置換パターンの後にスラッシュを置き、置換パターンの終わりを示すスラッシュ、任意に正規表現フラグを続ける。そこで、私が使用しているスニペットは次のとおりです。そして、これは単なる文字列(^)の先頭から一致する

<snippet> 
    <content><![CDATA[ 
${SELECTION/^\/dev\/myproject\///} 
]]></content> 
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet --> 
    <!-- <tabTrigger>hello</tabTrigger> --> 
    <!-- Optional: Set a scope to limit where the snippet will trigger --> 
    <!-- <scope>source.python</scope> --> 
</snippet> 

、リテラルは/dev/myproject/は(残念ながら変数は、正規表現パターンに使用することはできませんそれ以外の場合は、我々は多分できました$project_pathを使用)、それを何も置き換えません。 1試合しか期待していないので、gロバル正規表現修飾子フラグを使用する必要はありません。

我々は/dev/myproject/components/flower.htmlの選択とそれから得る出力は、次のとおりです。http://localhost:8080/app/はそれに先行して、それがhttp://localhost:8080/app/components/flower.htmlになりますので思わ

components/flower.html 

は、私たちが望むものであることを。

SELECTIONをスニペットから取り出して、に置き換えることができます。これは、元のように現在のファイルのパス上で動作し、ビルドにプラグインしますシステム:

"cmd": ["open", "http://localhost:8080/app/${file_path/^\/dev\/myproject\///}"] 
+0

交換が機能しませんでした。あなたの答えをありがとう、それは別の 'build.sh'ファイルを持っている私の一時的な解決策よりも良いだろうが、私はそれを動作させる方法を考え出していない、私は後で再試行します。 – user3579815

関連する問題