Gulp 未检测到子文件夹中的文件更改

Gulp not detecting file changes in subfolder

我正在使用 docker-yeoman image 启动一个容器,然后 运行 使用 Yeoman gulp-webapp 生成器来生成项目框架。

生成后,我运行将它放在同一个容器中使用:

docker run -it -p 9000:9000 -p 35729:35729 --rm -v $(pwd):/src cthulhu666/yeoman:gulp gulp serve`

这个位一切正常。我可以通过访问 192.168.99.100:9000 查看该站点(我使用的是 Docker 工具箱,所以它是一个 VM 而不是本地主机)。

但奇怪的事情发生了:

如果我将 body { background: red; } 添加到 /app/styles/main.scss,Gulp 会检测到更改,任务是 运行 并且页面背景变为红色。到目前为止,一切都很好。

但是,如果我随后创建一个 /app/styles/partials/_test.scss 然后将正文选择器移动到该文件中(将其包含在 main.scss 中 import "partials/test";) 那么当我保存文件时 Gulp 没有检测到任何变化。我可以得到 "notice" 更改的唯一方法是重新保存 main.scss 文件,此时 Gulp 开始并且对 _test.scss 文件的更改是也申请了。

我通过在本地安装生成器并重新运行进行相同的实验来对此进行测试。果然,在 main.scss 和 _test.scss 中所做的更改都如预期的那样正常应用。

任何人都可以阐明为什么 Docker 容器中不是这种情况吗?

好像和文件名中的下划线有关。 SCSS 允许您使用多种命名约定:

文件名:/partials/_test.scss / SCSS: @import "partials/_test";

文件名:/partials/_test.scss / SCSS: @import "partials/test";

文件名:/partials/test.scss / SCSS: @import "partials/test";

以上三项均正确导入部分。但是,只有最后一个允许 Gulp 检测更改(尽管仅在 Docker 容器中 - 它在本地工作正常)。

我仍然有兴趣知道这是为什么,如果有人有任何想法:)

Virtualbox 共享文件夹不能很好地用于文件监视。

(我相信你还能找到很多其他的)

Virtualbox 是 Docker Toolbox/Docker 机器用来提供 VM 的东西。