私はrecessをRuby gemとしてインストールしました(ただし、この質問はnpmパッケージとして実行した場合にも当てはまります)。変更されたときにLESSファイルを処理するためにwatchrを使用してBashスクリプトで使用しています。LESS ファイルに不適切な構文がある場合は常に、結果の CSS 出力ファイルは空であり、エラー トレースはありません (ファイルにエラー出力を入れる SASS とは異なります)。Rubyでrecess gemを使用すると、問題が発生するとエラーオブジェクトが生成されることを私は知っています...コマンドラインから使用している場合、そのエラー出力はどこに行くのでしょうか?
1 に答える
理解しているように、recess は無効な Less コードでエラーをスローしません。存在しないファイルをコンパイルしようとした場合にのみ、 にエラーが書き込まれstdout
ます。次のことを試してください。
>> npm install recess
>> ./node_modules/recess/bin/recess --compile test.less
test.less が存在しない場合、前のコマンドの結果は次のようになります。
Error reading file: test.less
次に、有効な less ファイルを作成します。
echo "p{ &.class{color:red}}" > valid.less
次のコマンドのコンパイル済み出力も に書き込まれstdout
ます。
>> ./node_modules/recess/bin/recess --compile valid.less
p.class {
color: #ff0000;
}
無効な出力に対して同じことを行っても、出力は生成されません。
>> echo "p{ &.class{color" > invalid.less
>> ./node_modules/recess/bin/recess --compile invalid.less
この回答は少し遅れているため、最新バージョンの Less は現在 1.7.3 であるのに対し、recess の現在のバージョンは less v1.3 を使用していることにも気付く必要があります。
npm でリセスをインストールできれば、期待どおりにエラーを生成する Less コマンドライン コンパイラもインストールできるはずです。
>> npm install less
>> echo "p{ &.class{color" > invalid.less
>> ./node_modules/less/bin/lessc invalid.less
上記のコマンドは、次のメッセージを に書き込みますstderr
。
ParseError: missing closing `}` in invalid.less on line 1, column 11:
1 p{ &.class{color
2
コマンドにコードをstderr
追加することで、ファイルにリダイレクトできます。2>errors.log
たとえば、次のコマンドを実行できます。
>> ./node_modules/less/bin/lessc invalid.less > style.css 2>errors.log
上記のコマンドは、有効な CSS を に書き込みinvalid.less
、エラーを に書き込みます。errors.log