测试插件与Varying Vagrant Vagrants一起使用

时间:2015-10-19 21:18:50

标签: wordpress-plugin symlink vvv-wordpress

我目前正在尝试使用VVV来开发和测试我的插件。我的主机操作系统是Win10。

我的插件位于D:\Workshop\projects\vendor\module。我已经使用了这个文件夹结构很长时间了,它非常方便,特别适合与Composer和朋友一起使用。

现在我已经安装了VVV,创建了一个VV的网站。我想测试一个插件,其源代码在D:\Workshop\projects\XedinUnknown\my-project。因此,我在D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\htdocs\wp-content\plugins中创建了一个指向该项目文件夹的符号链接。唉,它不起作用。如果我通过SSH连接到VVV和ls /srv/www/my-test-site/htdocs/wp-content/plugins,我可以看到my-project,但它指向../../../../../../../XedinUnknown/my-project,当然,它不存在。如果不是符号链接我创建一个联结,它只是一个空文件。

我怀疑这与Linux环境如何处理Windows符号链接有关,但我并不完全确定。有可能以某种方式使这项工作?我真的不想将整个项目文件夹复制到VVV。

此问题也已解决here

1 个答案:

答案 0 :(得分:2)

所以,似乎我找到了一些解决方案。我添加了一个同步文件夹,它映射到我的项目主页。然后,我从VM插件目录中创建一个符号链接到该文件夹​​。

第1步 - 添加共享文件夹

这应该按照Customfile解释Vagrantfile。此文件应与Vagrantfile放在同一目录中,例如它将成为D:\Workshop\projects\XedinUnknown\vvv-local的兄弟姐妹。在我的情况下,如果您跟随我的问题,它就在Customfile。放在这里的任何东西都会成为整个VVV的全球。这也使您能够在不同的网站中使用不同的项目组合。将这些内容添加到config.vm.synced_folder "D:/Workshop/projects", "/srv/projects", :owner => "www-data", :mount_options => [ "dmode=775", "fmode=774" ],如果它不存在则创建它。

D:/Workshop/projects

当然,您应该将/替换为存储项目的路径。请注意正斜杠(\\)。这适用于Win / Nix。对于仅限Windows的配置,我怀疑您必须用vvv-init.sh替换它们,因为这是一个转义序列。

第2步 - 添加项目链接

这应该在您网站的D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\文件中完成。就我而言,此文件位于my-test-site,因为我想专门为vvv-init.sh网站创建此符号链接。请注意,您的VVV路径可能会有所不同,并且它不必位于项目目录中。它就是你here VVV进入的地方。将以下行添加到您网站的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 文件中。

/srv/projects/

在上面的代码段中,将路径更改为所需的项目路径,请记住my-project现在将实时映射到主机操作系统中的项目根目录。您还可以将ln -s /srv/projects/XedinUnknown/my-project my-projectvvv-init.sh的第二个匹配项(最后一个单词)替换为您想要的任何内容。只要您以后不更改它,您的插件就不应该突然被取消激活。

另外,根据我的理解,vagrant up --provision在配置期间运行,而不是每次启动机器时运行。因此,如果要在其中运行代码,则必须从VVV目录运行vagrant ssh。如果您不想配置,可以手动运行它。使用cd /srv/www/my-test-site,然后my-test-site(将. vvv-init.sh替换为您的网站名称)SSH到VVV,然后运行Customfile

后记

我对Bash脚本很新,我不知道我的解决方案是否是最好的解决方案,所以请随意提出更好的Bash脚本版本。我也不认识Ruby,也不熟悉Vagrant,所以请随意建议改进Vagrantfile - 这实际上与{{1}}相同。

我可以通过此解决方案预测的一个可能的问题(这本身就是文件系统架构的设计)是,如果WordPress决定对您的插件进行更改,例如如果您运行WP更新,它将有效删除项目中的所有文件,包括存储库。因此,在测试网站上,我建议使用类似cloned的内容。我与此插件无关。