asika / cross-env
Cross platform setting of environment scripts for PHP.
Installs: 138 511
Dependents: 5
Suggesters: 0
Security: 0
Stars: 3
Watchers: 2
Forks: 1
Open Issues: 0
Requires
- php: >=8.0
- symfony/process: ^6.0||^7.0
Requires (Dev)
- phpunit/phpunit: ^9.0||^10.0||^11.0
- roave/security-advisories: dev-master
- windwalker/test: ^4.0
- windwalker/utilities: ^4.0
README
Cross platform setting of environment scripts for PHP.
Installation
Install in project
composer require asika/cross-env
Install globally
composer global require asika/cross-env
Usage
Global Install
Just call cross-env
:
cross-env APP_ENV=dev TEST_MODE=real php my-code.php
In Project
If you install it in project, use composer scripts:
{ ... "scripts": { "build:dev": "cross-env APP_ENV=dev TEST_MODE=real php my-code.php" }, ... }
Then call it by composer
composer build:dev
# OR
composer run build:dev
You can also call bin file directly:
./vendor/bin/cross-env APP_ENV=dev TEST_MODE=real php my-code.php
See https://getcomposer.org/doc/articles/scripts.md
Alias
If you have installed node cross-env
and has a prior order in PATH,
you can use set-env
as an global alias.
Use .env
File
Call cross-source
to set a file as env vars.
cross-source /path/.env php my-code.php
Programmatically Call
If you want to use cross-env
in your own CLI Application, you can use 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' );
Custom Output
Add second argument as a callable.
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 } } );
See Symfony/Process: https://symfony.com/doc/current/components/process.html#usage