2

我已将凹槽安装为 Ruby gem(尽管如果我将其作为 npm 包执行,则此问题也适用),并且在带有 watchr 的 Bash 脚本中使用它来在更改 LESS 文件时对其进行处理。每当 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 v1.3 而最新版本的 Less 现在是 1.7.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 回答