所以,我似乎找到了一些解决方案。我添加了一个同步文件夹,它映射到我的项目主页。然后,我从 VM 内的 WP 插件目录创建指向该文件夹的符号链接。
第 1 步 - 添加共享文件夹
这应该在Customfile 中完成,如here 所述。此文件应与Vagrantfile 进入同一目录,例如它将成为Vagrantfile 的兄弟。就我而言,如果您按照我的问题进行操作,它位于D:\Workshop\projects\XedinUnknown\vvv-local。放在这里的任何东西都将成为整个 VVV 的全球性内容。这也使您能够在不同的网站中使用不同的项目组合。将这些内容添加到您的 Customfile,如果它不存在则创建它。
config.vm.synced_folder "D:/Workshop/projects", "/srv/projects", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ]
当然,您应该将D:/Workshop/projects 替换为您存储项目的路径。请注意正斜杠 (/)。这适用于 Win/Nix。对于仅限 Windows 的配置,我怀疑您必须将它们替换为 \\,因为这是一个转义序列。
第 2 步 - 添加项目链接
这应该在您网站的vvv-init.sh 文件中完成。在我的例子中,这个文件在D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\ 中,因为我想专门为my-test-site 站点创建这个符号链接。请注意,您的 VVV 路径可能会有所不同,并且它不必位于项目目录中。无论您在哪里clonedVVV 进入。将以下行添加到您网站的 vvv-init.sh 文件中。
if [ ! -f "htdocs/wp-content/plugins/my-project" ]; then
echo 'Creating symlink to plugin project...'
cd ./htdocs/wp-content/plugins
ln -s /srv/projects/XedinUnknown/my-project my-project
cd -
fi
在上面的 sn-p 中,将路径更改为所需的项目路径,请记住 /srv/projects/ 现在将 live 映射到主机操作系统中的项目根目录。您还可以用您想要的任何内容替换ln -s /srv/projects/XedinUnknown/my-project my-project 中my-project 的第二次出现(最后一个字)。只要您以后不更改它,您的插件就不会突然被停用。
另外,据我了解,vvv-init.sh 在配置期间运行,而不是在每次启动机器时运行。所以,如果你想在那里运行代码,你必须从 VVV 目录运行vagrant up --provision。如果您不想配置,可以手动运行它。使用 vagrant ssh SSH 进入 VVV,然后使用 cd /srv/www/my-test-site(将 my-test-site 替换为您的站点名称),然后运行 . vvv-init.sh。
后记
我对 Bash 脚本很陌生,我不知道我的解决方案是否是最好的,所以请随时建议更好的 Bash 脚本版本。我也不了解 Ruby,而且是 Vagrant 的新手,所以请随时提出对 Customfile 的改进建议 - 这与 Vagrantfile 本质上相同。
我可以预料到这个解决方案的一个可能问题(这本质上是文件系统架构的设计)是,如果 WordPress 决定对您的插件进行更改,例如如果您运行 WP 更新,它将有效地删除项目中的所有文件,包括存储库。因此,在测试站点上,我建议使用this 之类的东西。我与这个插件没有任何关系。