使用Laravel与Composer发布自定义包文件

时间:2018-07-13 11:37:10

标签: laravel composer-php artisan composer.json

我创建了新程序包,我想避免单独发布命令,我需要在程序包composer.json文件中包括发布命令。因此,在安装软件包时,应根据服务提供商的路径移动文件。

我尝试了以下方法,但是资产/文件未发布。

"scripts": {
    "post-install-cmd": [
        "php artisan vendor:publish --provider=\"<vendorname>\\<packagename>\\<Serviceprovider>\" --tag=public --force",
        "php artisan migrate"
    ],
    "post-update-cmd": [
        "php artisan vendor:publish --provider=\"<vendorname>\\<packagename>\\<Serviceprovider>\" --tag=public --force",
        "php artisan migrate"
    ]
  }

但是直接运行如下所示的命令时,效果很好

php artisan vendor:publish --provider="<vendorname>\<packagename>\<Serviceprovider>"

请为此提供解决方案。

3 个答案:

答案 0 :(得分:2)

您尝试手动使用以下代码。如果它返回了您需要的东西,那么您就走对了。否则,某些打字错误应由脚本命令执行。

composer run-script post-install-cmd

答案 1 :(得分:0)

Composer不支持除根级别的脚本以外的自动运行的脚本。这是somewhat contested, but doesn't look like it's going to change any time soon

您最好的选择可能是在自述文件中手动运行命令/指示用户手动运行命令:composer run-script post-install-cmd -d ./vendor/[name]/[package]

答案 2 :(得分:0)

也许您应该尝试在命令之前使用@,并且我建议您在“ post-autoload-dump”部分尝试编写命令。对我来说这是工作。

"scripts": {
    "post-autoload-dump": [
        "@php artisan vendor:publish --provider='<vendorname>\\<packagename>\\<Serviceprovider>' --tag=public --force",
        "@php artisan migrate"
    ]
  }