我目前正在尝试使用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。
答案 0 :(得分:2)
所以,似乎我找到了一些解决方案。我添加了一个同步文件夹,它映射到我的项目主页。然后,我从VM插件目录中创建一个符号链接到该文件夹。
这应该按照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
替换它们,因为这是一个转义序列。
这应该在您网站的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-project
中vvv-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的内容。我与此插件无关。