我正在使用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 Toolbox,因此它是一个VM而不是localhost)。
但是发生了一些奇怪的事情:
如果我将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容器中不是这种情况吗?
答案 0 :(得分:0)
这似乎与文件名中的下划线有关。 SCSS允许您使用各种命名约定:
文件名: /partials/_test.scss / SCSS:@import" partials / _test&#34 ;;
文件名: /partials/_test.scss / SCSS:@import" partials / test&#34 ;;
文件名: /partials/test.scss / SCSS:@import" partials / test&#34 ;;
以上三个都正确导入部分。但是,只有最后一个允许Gulp检测到更改(尽管只在Docker容器中 - 它在本地工作正常)。
我仍然有兴趣知道为什么会这样,如果有人有任何想法:)
答案 1 :(得分:0)
Virtualbox共享文件夹在查看文件时效果不佳。
(我相信你可以找到很多其他人)
Virtualbox是Docker Toolbox / Docker Machine用来提供VM的。