我在FreeBSD系统上运行Sass(设法使用the linux package模拟器和linux_base-c7
使kldload linux64
工作)。
如果我手动运行它
sass style.scss style.css
它工作正常。
但有些人为什么不进入观看模式。当我输入
sass --watch style.scss style.css
它不打印任何消息(“Sass正在观看......”或类似的东西)。而且手表也不起作用:当我修改并保存style.css
时,style.scss
保持不变。
可能有什么问题,我在哪里可以找到错误?
问题显然来自于在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注销,脚本也将在后台运行。
您使用的是什么版本的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)
。