sass-brunch在实时重载

时间:2017-11-15 03:43:44

标签: phoenix-framework brunch sass-brunch

在我的凤凰项目中,我发现sass-brunch的特殊行为。

以下是我的问题的简短描述:

  • 当Phoenix服务器在dev环境中启动时,它会在app.css目录上生成正确的priv/static/css
  • 当我修改其中一个SCSS文件时,会生成app.css,但只缺少修改过的SCSS文件中的行。它保留了未修改文件的行。
  • Ubuntu 16.04上会出现此问题,但不会出现在macOS上。

在日志文件中,我注意到可能与此问题相关的条目:

[debug] Duplicate channel join for topic "phoenix:live_reload" in Phoenix.LiveReloader.Socket. Closing existing channel for new join.

我的Mac上没有看到这样的一行。

我的环境:

  • Ubuntu 16.04桌面
  • Phoenix 1.2.5
  • Node.js 8.9.1
  • npm 5.5.1
  • 早午餐2.10.7
  • sass-brunch 2.10.4

我的package.json

{ "repository": {}, "license": "MIT", "scripts": { "deploy": "brunch build --production", "watch": "brunch watch --stdin" }, "dependencies": { "phoenix": "file:deps/phoenix", "phoenix_html": "file:deps/phoenix_html" }, "devDependencies": { "babel-brunch": "6.0.6", "brunch": "2.10.7", "clean-css-brunch": "2.10.0", "sass-brunch": "^2.10.4", "uglify-js-brunch": "2.1.1" } }

[UPDATE]

我发现了一个有趣的事实。

  • 当我使用vim编辑SCSS文件时,app.css会正常生成。
  • 当我使用 atom 编辑它们时,事情进展不顺利。

1 个答案:

答案 0 :(得分:0)

我找到了解决问题的方法。

将这些行添加到brunch-config.js

watcher: { usePolling: true }

正如早午餐的documentation所说,观察者变得更慢,但通过将true设置为此选项可以更加可靠。

usePolling选项传递给chokidar,其文档说明:

  

usePolling(默认:false)。是否使用fs.watchFile(由轮询支持)或fs.watch。如果轮询导致CPU利用率过高,请考虑将其设置为false。通常需要将其设置为true以成功通过网络观看文件,并且可能需要在其他非标准情况下成功观看文件。