使用 Varying Vagrant Vagrants 测试插件
Testing plugins live with Varying Vagrant Vagrants
我目前正在尝试使用 VVV 来开发和测试我的插件。我的主机OS是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
中创建了一个指向该项目文件夹的符号链接。 las,它不起作用。如果我 SSH 进入 VVV 和 ls /srv/www/my-test-site/htdocs/wp-content/plugins
,我可以在那里看到 my-project
,但它指向 ../../../../../../../XedinUnknown/my-project
,当然,它不存在。如果我创建一个联结而不是符号链接,它只是一个空文件。
我怀疑这与 Linux 环境如何处理 Windows 符号链接有关,但我不完全确定。有可能以某种方式使这项工作吗?我真的不想将整个项目文件夹复制到 VVV 中。
这也解决了 here。
看来我找到了某种解决方案。我添加了一个同步文件夹,映射到我的项目主页。然后,我从 VM 内的 WP 插件目录创建指向该文件夹的符号链接。
第 1 步 - 添加共享文件夹
这应该在 Customfile
中完成,如 here 所述。此文件应与 Vagrantfile
进入同一目录,例如它将成为 Vagrantfile
的兄弟姐妹。就我而言,如果您正在关注我的问题,它在 D:\Workshop\projects\XedinUnknown\vvv-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 步 - 添加 Link 到项目
这应该在您网站的 vvv-init.sh
文件中完成。在我的例子中,这个文件在 D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\
中,因为我想专门为 my-test-site
站点创建这个符号链接。请注意,您的 VVV 路径可能会有所不同,并且它不必位于项目目录中。无论您 cloned 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 映射到主机中的项目根目录 OS。您还可以将 ln -s /srv/projects/XedinUnknown/my-project my-project
中 my-project
的第二次出现(最后一个词)替换为您想要的任何内容。只要您以后不更改它,您的插件就不会突然停用。
此外,据我了解,在配置期间 vvv-init.sh
运行s,并非每次启动计算机时。所以,如果你想 运行 那里的代码,你必须从 VVV 目录 运行 vagrant up --provision
。如果您不想配置,可以手动 运行。使用 vagrant ssh
、cd /srv/www/my-test-site
(将 my-test-site
替换为您的站点名称)和 运行 . vvv-init.sh
.
通过 SSH 进入 VVV
后记
我是 Bash 脚本编写的新手,我不知道我的解决方案是否是最好的,所以请随时建议 Bash 脚本的更好版本。我也不知道 Ruby,并且是 Vagrant 的新手,所以请随时提出对 Customfile
的改进建议 - 这在本质上与 Vagrantfile
.[=38 相同=]
我可以预见这个解决方案的一个可能问题(这是文件系统架构设计的固有问题)是,如果 WordPress 决定对您的插件进行更改,例如如果您 运行 WP 更新,它将有效地 删除项目中的所有文件,包括存储库 。因此,在测试站点上,我建议使用 this 之类的东西。我与这个插件没有任何关系。
我目前正在尝试使用 VVV 来开发和测试我的插件。我的主机OS是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
中创建了一个指向该项目文件夹的符号链接。 las,它不起作用。如果我 SSH 进入 VVV 和 ls /srv/www/my-test-site/htdocs/wp-content/plugins
,我可以在那里看到 my-project
,但它指向 ../../../../../../../XedinUnknown/my-project
,当然,它不存在。如果我创建一个联结而不是符号链接,它只是一个空文件。
我怀疑这与 Linux 环境如何处理 Windows 符号链接有关,但我不完全确定。有可能以某种方式使这项工作吗?我真的不想将整个项目文件夹复制到 VVV 中。
这也解决了 here。
看来我找到了某种解决方案。我添加了一个同步文件夹,映射到我的项目主页。然后,我从 VM 内的 WP 插件目录创建指向该文件夹的符号链接。
第 1 步 - 添加共享文件夹
这应该在 Customfile
中完成,如 here 所述。此文件应与 Vagrantfile
进入同一目录,例如它将成为 Vagrantfile
的兄弟姐妹。就我而言,如果您正在关注我的问题,它在 D:\Workshop\projects\XedinUnknown\vvv-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 步 - 添加 Link 到项目
这应该在您网站的 vvv-init.sh
文件中完成。在我的例子中,这个文件在 D:\Workshop\projects\XedinUnknown\vvv-local\www\my-test-site\
中,因为我想专门为 my-test-site
站点创建这个符号链接。请注意,您的 VVV 路径可能会有所不同,并且它不必位于项目目录中。无论您 cloned 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 映射到主机中的项目根目录 OS。您还可以将 ln -s /srv/projects/XedinUnknown/my-project my-project
中 my-project
的第二次出现(最后一个词)替换为您想要的任何内容。只要您以后不更改它,您的插件就不会突然停用。
此外,据我了解,在配置期间 vvv-init.sh
运行s,并非每次启动计算机时。所以,如果你想 运行 那里的代码,你必须从 VVV 目录 运行 vagrant up --provision
。如果您不想配置,可以手动 运行。使用 vagrant ssh
、cd /srv/www/my-test-site
(将 my-test-site
替换为您的站点名称)和 运行 . vvv-init.sh
.
后记
我是 Bash 脚本编写的新手,我不知道我的解决方案是否是最好的,所以请随时建议 Bash 脚本的更好版本。我也不知道 Ruby,并且是 Vagrant 的新手,所以请随时提出对 Customfile
的改进建议 - 这在本质上与 Vagrantfile
.[=38 相同=]
我可以预见这个解决方案的一个可能问题(这是文件系统架构设计的固有问题)是,如果 WordPress 决定对您的插件进行更改,例如如果您 运行 WP 更新,它将有效地 删除项目中的所有文件,包括存储库 。因此,在测试站点上,我建议使用 this 之类的东西。我与这个插件没有任何关系。