使用 Homeboy 让你的 Homestead 更加简便易用

homeboy

homeboy 是一个 使用 Laravel Homestead 自动化网站的工具。只用一个命令,Homeboy 便将会:

  • 使用 ComposerLaravel 项目安装到一个新的目录
  • 更新你的 Hosts 文件,将你的开发域名指向到你的 Homestead IP
  • 更新你的 homestead.yaml 文件以包含你的新项目
  • 更新你的 homestead.yaml 文件为你的项目创建数据库
  • 重新准备你的 Vagrant,以更新配置

目录

要求

在你的(非 Homestead)电脑上,Homeboy 的安装需要:

  • Git
  • PHP
  • Composer

安装

全局安装为 Composer 的插件

$ composer global require "kilroyweb/homeboy" dev-master

请确保将 $HOME/.composer/vendor/bin 目录(或您的操作系统的等效目录)放在您的 $PATH 中,以便您的系统可以找到 laravel 可执行文件。

在安装完成之后,你可以使用系统的任何地方使用 homeboy 命令。

运行安装命令以生成 .env 文件:

$ php homeboy setup

使用 Git Clone 安装

  • 在你的本地机器上,克隆 Homeboy:
$ cd ~
$ git clone https://github.com/kilroyweb/homeboy.git homeboy
  • 进入 homeboy 目录,执行安装 Composer 依赖:
$ cd homeboy
$ composer install

运行安装命令以生成 .env 文件:

$ php homeboy setup

至此,你应该可以使用以下命令在目录中运行homeboy:

$ php homeboy
  • 创建一个 alias 从任何目录运行 homeboy

Mac 上(在 〜/.bash_profile 中)添加:

alias homeboy='php ~/homeboy/homeboy'

Windows 上,可以使用类似于 Cmder 这样的工具来添加别名

homeboy=php C:\Users\[USER]\homeboy\homeboy $*

Tips: 一定要根据安装homeboy的位置来编辑路径哦~

设置

运行 php homeboy setup 后,你的 homeboy 目录中应该有一个 .env 文件,并且已经生成了一些默认值。

这些选项可能需要根据您的特定设置进行更新,下面列出了每种可用设置的详细信息:

USE_COMPOSER

此选项用来确定是否应该创建一个新的 Composer 项目:

USE_COMPOSER=true

DEFAULT_COMPOSER_PROJECT

创建一个 Composer 项目时使用的默认包

DEFAULT_COMPOSER_PROJECT=laravel/laravel

DEFAULT_FOLDER_SUFFIX

创建一个新项目时,nginx 将定义为站点根目录的默认目录,默认情况下它是 /public

DEFAULT_FOLDER_SUFFIX=/public

DEFAULT_DOMAIN_EXTENSION

生成域名时的后缀,默认是 .app

DEFAULT_DOMAIN_EXTENSION=.app

HOSTS_FILE_PATH

创建新项目时,homeboy 将它添加到本地 hosts 文件的位置

homeboy 需要有权限对这个文件进行更改

HOSTS_FILE_PATH=/etc/hosts

HOMESTEAD_HOST_IP

Homesead 虚拟主机的IP地址。它可以在您的 Homestead.yaml 文件中找到

HOMESTEAD_HOST_IP=192.168.10.10

HOMESTEAD_FILE_PATH

您的 Homestead.yaml 文件的位置。当创建新项目时,Homeboy 将更新这个文件的站点列表和数据库列表

HOMESTEAD_FILE_PATH=/Users/Username/Homestead/Homestead.yaml

HOMESTEAD_SITES_PATH

您的 Homestead 虚拟机中的网站的根路径

HOMESTEAD_SITES_PATH=/home/vagrant/Code/

HOMESTEAD_BOX_PATH

您的 Homestead 目录

HOMESTEAD_BOX_PATH=/Users/Username/Homestead

LOCAL_SITES_PATH

您本地计算机上存储项目的路径。运行 composer create-project ... 时,Homeboy将进入该目录。

LOCAL_SITES_PATH=/Users/Username/Code

HOMESTEAD_ACCESS_DIRECTORY_COMMAND

Windows 中,如果您在不同的磁盘上运行 Homestead,则可能需要额外的命令才能在切换到您的目录之前切换磁盘。

这个选项会导致 Homeboy 忽略选项:HOMESTEAD_BOX_PATH

HOMESTEAD_ACCESS_DIRECTORY_COMMAND="cd /d D: && cd /Homestead"

ACCESS_LOCAL_SITES_DIRECTORY_COMMAND

HOMESTEAD_ACCESS_DIRECTORY_COMMAND 类似,在 Windows 中,如果您的根项目目录位于不同的磁盘上,则可能需要额外的命令才能在切换到您的目录之前切换驱动器。

这个选项会导致 Homeboy 忽略选项:LOCAL_SITES_PATH

ACCESS_LOCAL_SITES_DIRECTORY_COMMAND="cd /d D: && cd /Code"

Homeboy 命令

Host

homeboy host

因为这是默认命令,所以它可以简化为:

homeboy

运行这个命令会自动创建一个新的 Composer 项目,在配置新项目时更新你的 hosts 文件和 Homestead.yaml 文件

当命令运行时,会提示输入你的站点目录名称,数据库名称和开发域名,然后重载 vagrant

我们已经添加了几个选项来使这个过程更加简单,但是因为 homeboy 这个命令只是 homeboy host 的一个快捷方式(允许我们在将来添加额外的命令),所以以下选项只有在使用 homeboy host 而不是 homeboy 时才会生效。

一些可用选项:

  • --use-defaults : 在配置之前自动接受默认值
  • --skip-confirmation : 运行任务前自动确认
  • --name : 新项目的目录名称
  • --database : 添加到 Homestead 的数据库
  • --domain : 新开发域名

以下示例将自动运行所有任务,而不会有任何询问提示:

homeboy host --name=my-project --use-defaults --skip-confirmation

Vagrant

Homeboy 还包含 vagrant:run 命令,允许你快速运行任何 vagrant 命令,而不必 cd 进入该目录,即:

homeboy vagrant:run status

File

通过运行 file 命令可以快速查看文件内容:

homeboy file hosts

或者

homeboy file homestead

Domain

domain 命令可以让你快速添加一个新的域名到你的 hosts 文件。

homeboy domain

Composer

composer:create-project 命令会提示您运行 composer create-project [composer-project] [project-name] 命令的详细信息

homeboy composer:create-project

可能遇到的问题

hosts 文件不可写

您的 hosts 文件需要由 homeboy 写入。在许多情况下,这可以通过像下面的命令来解决:

sudo chmod 664 /etc/hosts

可能会根据您的 平台/环境 而有所不同

Homeboy正在我的当前目录中运行 Composer 安装,而不是我定义的 LOCAL_SITES_PATH

Windows 上的一个常见原因是当 LOCAL_SITES_PATH 与运行 homeboy 命令的磁盘位于不同的磁盘中时。由于 Windows 必须首先更改磁盘才能进入目录,因此可以使用 ACCESS_LOCAL_SITES_DIRECTORY_COMMAND 来覆盖 homeboy 访问此目录的方式。例如:

ACCESS_LOCAL_SITES_DIRECTORY_COMMAND="cd /d D: && cd /Code"

Vagrant 返回 “A Vagrant environment or target machine is required to run this comman”

这个信息会在 Homeboy 无法在运行 vagrant 命令时进入正确的 vagrant目录下显示。请验证您的 HOMESTEAD_BOX_PATH 设置以确保它是正确的。

Windows 上,如果您的 HOMESTEAD_BOX_PATH 与您运行 homeboy 命令的磁盘位于不同的磁盘中,则可能需要添加 HOMESTEAD_ACCESS_DIRECTORY_COMMAND 以在访问目录时添加其他命令(如切换磁盘)。例如:

HOMESTEAD_ACCESS_DIRECTORY_COMMAND="cd /d D: && cd /Homestead"

Github地址:Homeboy