2

私はrecessをRuby gemとしてインストールしました(ただし、この質問はnpmパッケージとして実行した場合にも当てはまります)。変更されたときにLESSファイルを処理するためにwatchrを使用してBashスクリプトで使用しています。LESS ファイルに不適切な構文がある場合は常に、結果の CSS 出力ファイルは空であり、エラー トレースはありません (ファイルにエラー出力を入れる SASS とは異なります)。Rubyでrecess gemを使用すると、問題が発生するとエラーオブジェクトが生成されることを私は知っています...コマンドラインから使用している場合、そのエラー出力はどこに行くのでしょうか?

4

1 に答える 1

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

于 2014-07-08T19:03:17.910 に答える