asika / cross-env

PHP的环境脚本跨平台设置。

2.0.0 2023-11-20 07:48 UTC

This package is auto-updated.

Last update: 2024-09-20 09:37:30 UTC


README

PHP的环境脚本跨平台设置。

安装

在项目中安装

composer require asika/cross-env

全局安装

composer global require asika/cross-env

使用方法

全局安装

只需调用 cross-env

cross-env APP_ENV=dev TEST_MODE=real php my-code.php

在项目中

如果您在项目中安装了它,请使用composer脚本

{
    ...
    "scripts": {
        "build:dev": "cross-env APP_ENV=dev TEST_MODE=real php my-code.php"
    },
    ...
}

然后通过composer调用

composer build:dev

# OR

composer run build:dev

您也可以直接调用bin文件

./vendor/bin/cross-env APP_ENV=dev TEST_MODE=real php my-code.php

https://getcomposer.org.cn/doc/articles/scripts.md

别名

如果您已经安装了node cross-env 并且它在PATH中有优先级,您可以使用 set-env 作为全局别名。

使用 .env 文件

通过调用 cross-source 将文件设置为环境变量。

cross-source /path/.env php my-code.php

程序化调用

如果您想在自己的CLI应用程序中使用 cross-env,可以使用 CrossEnv\CrossEnv

$returnCode = \CrossEnv\CrossEnv::runWithCommand('APP_ENV=dev TEST_MODE=real php my-code.php');

// OR

$returnCode = \CrossEnv\CrossEnv::runWithArgs([
    'APP_ENV=dev',
    'TEST_MODE=real',
    'php',
    'my-code.php'
);

自定义输出

添加第二个参数为一个可调用对象。

use Symfony\Component\Process\Process;

\CrossEnv\CrossEnv::runWithCommand(
    'APP_ENV=dev TEST_MODE=real php my-code.php',
    function (string $type, string $buffer) {
        if ($type === Process::ERR) {
            // Handle error
        } else {
            // Handle output
        }
    }
);

见 Symfony/Process: https://symfony.ac.cn/doc/current/components/process.html#usage