0
所以我们试图为我们的项目创建一个服务,但是想把它放在我们可以在其他项目中使用的包中。在这个软件包中会有一些迁移,所以我想知道将迁移包含在composer包中并在安装时运行的过程。执行从作曲家软件包的迁移安装
我的想法是让作曲家运行artisan命令来创建一个带有设置名称的迁移,然后将包中的迁移复制到创建的迁移中,然后运行artisan migrate命令。
这个解决方案是否好,还是有更好的方法呢?
所以我们试图为我们的项目创建一个服务,但是想把它放在我们可以在其他项目中使用的包中。在这个软件包中会有一些迁移,所以我想知道将迁移包含在composer包中并在安装时运行的过程。执行从作曲家软件包的迁移安装
我的想法是让作曲家运行artisan命令来创建一个带有设置名称的迁移,然后将包中的迁移复制到创建的迁移中,然后运行artisan migrate命令。
这个解决方案是否好,还是有更好的方法呢?
如果你想创建一个包laravel,该documentation让您有机会从你的包添加迁移在你的包的ServiceProvider添加此
/**
* src/NameAuthor/NamePackage/ServiceProvider.php
* migrations package inside src/database/migrations folder by example
*
*/
public function boot()
{
$this->publishes([
__DIR__.'/database/migrations/' => database_path('migrations')
], 'migrations');
}
然后你就可以运行该命令
php artisan vendor:publish --tag=migrations
如果您希望直接使用composer启动迁移,可以在composer.json中添加关键“脚本”,然后启动composer。 The documentation of composer这个是比较明确的,但是这是laravel的laravel composer.json的例子
"scripts": {
"post-root-package-install": [
"php -r \"copy('.env.example', '.env');\""
],
"post-create-project-cmd": [
"php artisan key:generate"
],
"post-install-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postInstall",
"php artisan optimize"
],
"post-update-cmd": [
"Illuminate\\Foundation\\ComposerScripts::postUpdate",
"php artisan optimize"
]
},
然后你可以注入自己,如果你要启动的作曲家和检索包迁移上面的命令。