【问题标题】:sass --watch doesn't watch on FreeBSDsass --watch 不在 FreeBSD 上观看
【发布时间】:2019-07-22 04:34:15
【问题描述】:

我在 FreeBSD 系统上运行 Sass(设法使用 linux_base-c7 模拟器和 kldload linux64 使 the linux package 工作)。

如果我像手动运行它

sass style.scss style.css

效果很好。

但不知何故它没有进入手表模式。当我输入时

sass --watch style.scss style.css

它不打印任何消息(“Sass 正在观看...”或类似的东西)。而且手表也不工作:当我修改并保存style.scss 时,style.css 保持不变。

它可能有什么问题,我可以在哪里查找错误?

【问题讨论】:

  • 只是一个建议,但也可以试试node-sass
  • @ııı,它需要我不使用的 Node.js。
  • 好的,但也许它可以工作(并且不需要 ¬inux 仿真)

标签: sass freebsd watch


【解决方案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 中注销后仍然存在。

【讨论】:

  • cmdwatch freebsd.org/cgi/man.cgi?query=cmdwatch,为了永远保持和运行某些东西,你可以试试immortalimmortal.run/freebsd
  • 或者,您可以查看entr
  • @nbari,感谢您的建议,immortal 可能适合。
  • @MateuszPiotrowski,非常有趣。我以前听说过此类工具,但从未详细介绍过。谢谢!
【解决方案2】:

您使用的是哪个版本的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)

【讨论】:

  • sass --version 输出 1.17.2。当尝试从命令行调用kqueue 时,它说找不到该命令。
  • 我似乎找不到这样的 sass 版本:rubygems.org/gems/sass/versions 那么它是如何安装的?如果它来自一个包/端口,你能运行pkg which `which sass` 并告诉我它显示了什么吗?
  • 这是 dart-sass,几周前从github.com/sass/dart-sass 下载的(很新鲜)。我可能对版本号产生了歧义。我是否应该编辑问题并提及我正在使用 Dart Sass?
  • 据我所知,dart 根本不支持 FreeBSD,所以我现在更加困惑了。
  • 我是直接从official Github repository下载的。除了--watch 选项外,它对我来说很好用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-13
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 2019-04-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多