Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Gulp未检测到子文件夹中的文件更改_Docker_Gulp_Yeoman - Fatal编程技术网

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

Docker Gulp未检测到子文件夹中的文件更改,docker,gulp,yeoman,Docker,Gulp,Yeoman,我正在使用启动一个容器,然后运行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 Toolbox,因此它是一个虚拟机而不是本地主机) 但奇怪的事情

我正在使用启动一个容器,然后运行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 Toolbox,因此它是一个虚拟机而不是本地主机)

但奇怪的事情正在发生:

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

但是,如果我随后创建了一个/app/styles/partials/_test.scss,然后将主体选择器移动到该文件中(使用
import“partials/test”
将其包含在main.scss中),则保存该文件时Gulp不会检测到任何更改。我能让它“注意到”更改的唯一方法是重新保存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.scss/ SCSS:@import“部分/测试”

以上三种方法都能正确导入部分。然而,只有最后一个允许Gulp检测更改(尽管只在Docker容器中-它在本地工作良好)


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

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

(我相信你可以找到很多其他的)


Virtualbox是Docker Toolbox/Docker Machine用来提供虚拟机的工具。

使用glob语法,比如:
sass/***/.scss
。它已经在gulpfile中使用了:
gulp.watch('app/styles/***.scss',['styles')当以完全相同的配置在本地运行时,它似乎会拾取子目录更改。。。只是在Docker容器中会导致下划线问题