我在FreeBSD系统上运行了Sass(可以通过linux_base-c7
仿真器和kldload linux64
使the linux package运行)。
如果我像这样手动运行
sass style.scss style.css
它工作正常。
但是为什么它没有进入监视模式。当我键入
sass --watch style.scss style.css
它不打印任何消息(“ Sass正在观看...”或类似内容)。而且手表也不起作用:style.css
在我修改并保存style.scss
时保持不变。
它可能有什么问题,我在哪里可以找到错误?
答案 0 :(得分:1)
问题显然来自在FreeBSD系统上运行:它的watch
实用程序与Linux的watch
完全不同,因此--watch
选项不起作用。
可以使用inotify-tools
软件包(必需的安装)来解决该问题。
我写了一个脚本,我们将其命名为sass-watch.sh
,该脚本可以建立对给定目录的监视,例如:
sh sass-watch.sh .
此脚本内容如下:
nohup \
inotifywait \
--recursive \
--monitor \
--event close_write \
--include '\.scss$' \
$1 \
| while read arg; do \
sass $1:$1 ; \
done &
该脚本将在后台运行,即使您从shell中注销也是如此。
答案 1 :(得分:0)
您使用的sass
是哪个版本?通过查看代码,看起来它使用了sass-listen
,在FreeBSD上使用了kqueue
:
https://rubygems.org/gems/sass/versions/3.7.4
https://rubygems.org/gems/sass-listen/versions/4.0.0
https://github.com/sass/listen/blob/v4.0.0/lib/sass-listen/adapter/bsd.rb
因此它根本不应该调用watch(1)
。