我目前正试图使用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-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更新,它将有效地删除你项目中的所有文件,包括存储库。所以,在测试网站上,我建议使用这样的东西。