BrowserSync + Gulp与Vagrant没有刷新

时间:2016-03-18 01:03:33

标签: gulp vagrant browser-sync

我使用BrowserSync和Gulp在更改特定类型的文件时在本地计算机上重新加载站点。我在gulpfile

中添加了以下代码段
gulp.task('browser-sync', function() {
    browsersync.init({
        proxy: "mySite:8080",
        files: ["./*.html", "dev/*.css"]
    });
});

当更改(并保存)上述任何类型的文件时,我在终端中得到这样的输出:

[BS] Serving files from: ./
[BS] Watching files...
[BS] File changed: index.html
[BS] File changed: dev\styles.css

网站一直按预期重新加载,但其内容并未反映所做的更改。我无法弄清楚我在这里做错了什么。任何暗示都赞赏!

更新

我忘了提到我的主机正在运行Windows 10而我的客机正在运行Ubuntu 14.04.4 LTS。 VM提供程序是VirtualBox。

最初,我使用默认的config.vm.synced_folder方法。我在我的vagrantfile

上有这个
config.vm.synced_folder "/Path/To/My/Host/Website/Folder/", "/usr/nginx/html/mywebsite/"

我尝试使用NFS后,使用以下配置:

config.vm.synced_folder "/Path/To/My/Host/Website/Folder/", "/usr/nginx/html/mywebsite/", 
:type => :nfs, 
:mount_options => ['nolock,vers=3,udp,noatime,actimeo=1']

由于我的主机运行Windows,我安装了插件vagrant-winnfsd,它增加了对NFS的支持。但是现在,当它试图挂载NFS共享文件夹时,vagrant会停止。

此外,由于我在vagrant upGuestAdditions versions on your host (5.0.16) and guest (4.3.36) do not match上收到以下错误,因此我安装了插件vagrant-vbgues,以使VirtualBox Guest Additions保持最新状态。无济于事。当Vagrant尝试挂载NFS共享文件夹时,它仍然处于冻结状态。

2 个答案:

答案 0 :(得分:1)

标题和标签表示你正在使用Vagrant,即使你的问题中没有提到它。

确保您的更改正在同步到VM。查看vagrant documentation以选择适合您情况的同步文件夹类型。他们的基本例子如下:

Vagrant.configure("2") do |config|
  # other config here

  config.vm.synced_folder "src/", "/srv/website"
end

您可以vagrant ssh并手动检查文件以确保它们匹配,并且已同步的文件夹按预期工作。

<强>更新

根据新信息和评论,我建议使用rsync作为共享文件夹方法。

config.vm.synced_folder "Host/Path/", "/Guest/Path", type: "rsync",
    rsync__exclude: [ '.git', 'logs'],
    rsync__args: ["--verbose"],
    rsync__chown: false

如果Windows处于混合状态,我从来没有找到一种让NFS播放效果良好(并且表现良好)的方法。

答案 1 :(得分:1)

问题恰好与VirtualBox有关,正如here所解释的那样。由于我在VirtualBox中的虚拟机上运行Nginx,我的问题的解决方案是在val doubled = optionalList.getOrElse(List.empty).map(_ * 2) 中注释掉sendfile指令,或者只是将其设置为关闭,如下所示:

nginx.conf

报告了同一问题herehere。与Vagrant docs一样,其中声明“存在与sendfile off; 相关的VirtualBox错误,这可能导致文件损坏或无法更新。”