1

我目前正在尝试使用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 中。

这也在这里解决。

4

1 回答 1

3

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

第 1 步 - 添加共享文件夹

这应该按照此处Customfile的说明在 a 中完成。该文件应与 进入同一目录,例如它将成为的兄弟。就我而言,如果您按照我的问题进行操作,则它位于. 放在这里的任何东西都将成为整个 VVV 的全球性内容。这也使您能够在不同的网站中使用不同的项目组合。将这些内容添加到您的中,如果不存在则创建它。VagrantfileVagrantfileD:\Workshop\projects\XedinUnknown\vvv-localCustomfile

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 路径可能会有所不同,并且它不必位于项目目录中。这是您将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/映射到主机操作系统中的项目根目录。您还可以用您想要的任何内容替换in的第二次出现(最后一个单词)。只要您以后不更改它,您的插件就不会突然被停用。my-projectln -s /srv/projects/XedinUnknown/my-project my-project

此外,据我了解,vvv-init.sh在配置期间运行,而不是每次启动机器时运行。所以,如果你想在那里运行代码,你必须vagrant up --provision从 VVV 目录运行。如果您不想配置,可以手动运行它。使用 SSH 进入 VVV vagrant ssh,然后cd /srv/www/my-test-site(替换my-test-site为您的站点名称),然后运行. vvv-init.sh​​.

后记

我对 Bash 脚本很陌生,我不知道我的解决方案是否是最好的,所以请随时建议更好的 Bash 脚本版本。我也不了解 Ruby,并且是 Vagrant 的新手,所以请随时提出改进建议Customfile- 这本质上与Vagrantfile.

我可以预料到这个解决方案的一个可能问题(这本质上是文件系统架构的设计)是,如果 WordPress 决定对您的插件进行更改,例如,如果您运行 WP 更新,它将有效地删除您的所有文件项目,包括存储库。因此,在测试站点上,我建议使用类似的东西。我与这个插件没有任何关系。

于 2015-10-19T23:12:14.023 回答