在composer.json中运行命令行命令

12

我试图编写一个composer.json文件,以便连续运行几个命令行命令,就像这样的例子:

"scripts": {
   "test": [
        "@createDir"
   ],
   "createDir": "mkdir testing"

}

当我在终端中使用 composer.phar update 运行 composer 文件时,并没有创建目录。有没有人能指导我正确的方向,告诉我该怎么做或者我错在哪里了?


你可能想要查看事件部分(pre-update-cmd或post-update-cmd)。 - brombeer
3个回答

32

默认情况下,Composer不会在installupdate结束时运行所有脚本。要实现这一点,您的脚本需要位于其中一个Command Event键下,例如post-update-cmd

您仍然可以在这些块中引用其他脚本,例如:

"scripts": {
    "post-install-cmd": [
        "@test"
    ],
    "test": [
        "touch foo"
    ]
}

要运行单独的脚本,您可以使用run-script命令:

composer run-script test

6
也可以通过composer test来实现。 - J.Hpour

4

如果你想运行一个永久运行命令,这会对你有所帮助

在 composer.json 文件中:

"scripts": {
   
    "start-lumen" : [
        "php -S localhost:8000 -t public"
    ]
}

添加 --timeout=0 以无限制运行

composer run-script  start-lumen --timeout=0

1
也许结构有误,让我给您举个例子:
{
"name": "laravel/laravel",
"description": "The Laravel Framework.",
"keywords": ["framework", "laravel"],
"license": "MIT",
"type": "project",
"require": {
    "php": ">=5.6.4",
    "laravel/framework": "5.3.*",
    "acacha/admin-lte-template-laravel": "dev-master",
    "yajra/laravel-datatables-oracle": "^6.21",
    "barryvdh/laravel-dompdf": "^0.7.0",
    "spatie/laravel-backup": "^3.0.0"
},
"require-dev": {
    "fzaninotto/faker": "~1.4",
    "mockery/mockery": "0.9.*",
    "phpunit/phpunit": "~5.0",
    "symfony/css-selector": "3.1.*",
    "symfony/dom-crawler": "3.1.*"
},
"autoload": {
    "classmap": [
        "database",
        "App/Helpers/MyCustomHelper"
    ],
    "psr-4": {
        "App\\": "app/"
    }
},
"autoload-dev": {
    "classmap": [
        "tests/TestCase.php"
    ]
},
"scripts": {
    "post-root-package-install": [
        "php -r \"file_exists('.env') || 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"
    ]
},
"config": {
    "preferred-install": "dist"
}
}

编辑:也许你可以尝试使用composer dump-autoload


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接