[扩展推荐] Laravel-initializer 自动化 Laravel 应用安装
你有自己动手编写过一个多步骤设置Laravel应用在一个新的环境当中吗?
Laravel Initializer 就是一个可以非常方便的能自动化安装和升级Laravel的应用:
Laravel Initializer 赋予你能力去声明多个操作还有在artisan 命令行运行app:install 和 app:update ,根据当前环境来选择运行预定义的动作链。
app:install
和 app:update
在命令行中用了两个明显不同的类运行在一个给定的环境。首先,install
命令使用了 App\Install
这个类:
namespace App;
use MadWeb\Initializer\Contracts\Runner;
class Install
{
public function production(Runner $run)
{
return $run
->external('composer', 'install', '--no-dev', '--prefer-dist', '--optimize-autoloader')
->artisan('key:generate')
->artisan('migrate', ['--force' => true])
->artisan('storage:link')
->external('npm', 'install', '--production')
->external('npm', 'run', 'production')
->artisan('route:cache')
->artisan('config:cache')
->artisan('event:cache');
}
public function local(Runner $run)
{
return $run
->external('composer', 'install')
->artisan('key:generate')
->artisan('migrate')
->artisan('storage:link')
->external('npm', 'install')
->external('npm', 'run', 'development');
}
}
app:update
命令看上去也很相似,使用了App\Update
这个类:
namespace App;
use MadWeb\Initializer\Contracts\Runner;
class Update
{
public function production(Runner $run)
{
return $run
->external('composer', 'install', '--no-dev', '--prefer-dist', '--optimize-autoloader')
->external('npm', 'install', '--production')
->external('npm', 'run', 'production')
->artisan('route:cache')
->artisan('config:cache')
->artisan('event:cache')
->artisan('migrate', ['--force' => true])
->artisan('cache:clear')
->artisan('queue:restart'); // ->artisan('horizon:terminate');
}
public function local(Runner $run)
{
return $run
->external('composer', 'install')
->external('npm', 'install')
->external('npm', 'run', 'development')
->artisan('migrate')
->artisan('cache:clear');
}
}
如果你需要操作一些服务在命令行运行期间,你也可以用服务提供者来依赖注入。
这个安装包由多个运行者操作组成,你应该看readme这样更详细。我发现了MakeCronTask
适配器的有趣地方:
$run->dispatch(new \MadWeb\Initializer\Jobs\MakeCronTask)
MakeCronTask 在服务器的计划任务列表添加了以下内容:
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1
这样你就能做一些不同的东西了,比如像创建一个supervisord配置用于典型的队列或者 horizon。
你能学到许多关于这个安装包的知识,获取完整的安装信息, 还可以阅读源码,一切尽在 GitHub 上 mad-web/laravel-initializer.
本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: