如果没有更改,如何使node-sass-middleware不会每次都重新编译?

时间:2016-08-15 15:40:18

标签: node.js express sass node-sass

从我可以确定的node-sass-middleware我用于编译Express中的.scss个文件,每次重新编译.css个文件中的.scss个文件请求已送达。

这对于生产环境来说并不理想,我更倾向于只在文件自上次编译后发生变化时才重新编译。我认为通过某种方式嗅探目标文件夹/文件是可能的,但我想知道是否有一种直接的方法来实现这一点,我不知道。可能是node-sass的标志或者我缺少的东西,虽然我在文档中找不到任何内容。

有可能每次都没有重新编译,但我不确定如何测试。

希望有人可以帮忙!三江源!

2 个答案:

答案 0 :(得分:0)

因此,在提交我的问题之后我很快就发现我可以检查文件的maxItemId元数据以确定文件是否已被重新编译。糟糕。

我做了一个测试:

  1. 推出应用并请求了一个页面,以便第一次编译last modified文件
  2. 记下.css文件的.css时间
  3. 再次请求该页面
  4. 将当前last modified时间与前一时间进行比较,但未发现任何更改
  5. last modified文件
  6. 进行了更改
  7. 再次比较.scss时间并发现它已更改,此外还有页面上反映的样式更改
  8. 因此,我得出结论:last modified以某种方式检测到没有进行任何更改,并且没有不必要地重新编译Sass,这很有用。我想这与它在RAM中缓存CSS文件的能力相结合,这是一个非常有效的解决方案。

    注意:我已经做了一些进一步的测试,发现即使没有对node-sass-middleware文件进行任何更改并且现有{{1},重新启动应用程序也会导致重新编译Sass文件完全有效。这表明它比仅仅嗅探文件夹/文件内容稍微多一些。

答案 1 :(得分:0)

每次处理请求时,从我的.css文件中重新编译.scss个文件。

来自documentation

可选配置:

  • force-[true | false],默认为false。始终重新编译。

我想您可以使用您的环境变量来防止.scss在生产模式下重新编译...