测试插件与不同的流浪汉一起生活



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

我的插件在D:Workshopprojectsvendormodule。我已经使用这种文件夹结构很长时间了,它真的很方便,特别是与Composer和朋友一起使用。

现在我已经安装了VVV,创建了一个网站与VV。我想测试一个插件,其源代码是在D:WorkshopprojectsXedinUnknownmy-project。所以,我在D:WorkshopprojectsXedinUnknownvvv-localwwwmy-test-sitehtdocswp-contentplugins中创建了一个符号链接,指向该项目的文件夹。唉,这行不通。如果我SSH到VVV和ls /srv/www/my-test-site/htdocs/wp-content/plugins,我可以看到my-project在那里,但它指向../../../../../../../XedinUnknown/my-project,当然,这是不存在的。如果我创建的不是符号链接,而是连接,那么它只是一个空文件。

我怀疑这与Linux环境处理Windows符号链接的方式有关,但我不完全确定。有没有可能让这一切顺利进行呢?我真的不想把整个项目文件夹复制到VVV.

所以,看起来我已经找到了一些解决方案。我添加了一个同步文件夹,它映射到我的项目主页。然后在VM的WP plugins目录中创建一个指向该文件夹的符号链接。

步骤1 -添加共享文件夹

这应该在这里解释的Customfile中完成。该文件应该与Vagrantfile放在同一个目录中,例如,它将成为Vagrantfile的兄弟文件。在我的情况下,如果你跟着我的问题,它是在D:WorkshopprojectsXedinUnknownvvv-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:WorkshopprojectsXedinUnknownvvv-localwwwmy-test-site中,因为我想专门为my-test-site站点创建这个符号链接。请注意,您的VVV路径可能会有所不同,它不一定要在项目目录中。就是你克隆VVV病毒的地方。将下面的行添加到您网站的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
在上面的代码片段中,将路径更改为您想要的项目路径,记住/srv/projects/现在将live映射到主机操作系统中的项目根目录。您还可以用您想要的任何内容替换ln -s /srv/projects/XedinUnknown/my-project my-projectmy-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更新,它将有效地删除你项目中的所有文件,包括存储库。所以,在测试网站上,我建议使用这样的东西。

最新更新