evilfreelancer / composer-json-generator
Small library for generating composer.json file with validation by composer's schema
Fund package maintenance!
Patreon
Installs: 11
Dependents: 0
Suggesters: 0
Security: 0
Stars: 6
Watchers: 2
Forks: 1
Open Issues: 0
pkg:composer/evilfreelancer/composer-json-generator
Requires
- php: ^7.4
- ext-json: *
Requires (Dev)
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2025-10-25 09:39:55 UTC
README
Composer JSON generator
Small PHP 7.4 library for generating composer.json file with validation by composer's schema
composer require evilfreelancer/composer-json-generator
Project inspired by spatie/schema-org.
How to use
All available examples is here.
Create new composer.json file in OOP style
require __DIR__ . '/vendor/autoload.php'; use \ComposerJson\Generator; use \ComposerJson\Schemas\Composer; use \ComposerJson\Schemas\Author; use \ComposerJson\Schemas\Psr4; // Initiate generator $generator = new Generator(); // Initiate composer object $composer = new Composer(); /* * Set basic parameters of new composer.json file */ $composer->name = 'evilfreelancer/composer-json-generator'; $composer->type = 'library'; $composer->description = 'Small library for generating composer.json file with validation by composer\'s schema'; $composer->keywords = ['composer', 'json', 'generator']; $composer->license = 'MIT'; /* * Autoloader details */ // For normal usage $psr4 = new Psr4(); $psr4->options = [ "ComposerJson\\" => './src/', ]; $composer->autoload[] = $psr4; // For tests $psr4 = new Psr4(); $psr4->options = [ "ComposerJson\\Tests\\" => './tests/', ]; $composer->autoloadDev[] = $psr4; /* * Authors of project */ $author = new Author(); $author->name = 'Paul Rock'; $author->email = 'paul@drteam.rocks'; $author->homepage = 'https://twitter.com/EvilFreelancer'; $author->role = 'Developer'; $composer->authors[] = $author; /* * Require rules */ $composer->require = [ 'php' => '^7.4', 'ext-json' => '*' ]; $composer->requireDev = [ 'phpunit/phpunit' => '^8.0', ]; /* * Load composer into the generator */ $generator->load($composer); /* * Generate result */ $array = $generator->toArray(); $json = $generator->toJson(); var_dump($array); echo $json . PHP_EOL;
Results is
{
"name": "evilfreelancer/composer-json-generator",
"description": "Small library for generating composer.json file with validation by composer's schema",
"type": "library",
"keywords": [
"composer",
"json",
"generator"
],
"license": "MIT",
"authors": [
{
"name": "Paul Rock",
"email": "paul@drteam.rocks",
"homepage": "https://twitter.com/EvilFreelancer",
"role": "Developer"
}
],
"require": {
"php": "^7.4",
"ext-json": "*"
},
"require-dev": {
"phpunit/phpunit": "^8.0"
},
"autoload": {
"psr-4": {
"ComposerJson\\": "./src/"
}
},
"autoload-dev": {
"psr-4": {
"ComposerJson\\Tests\\": "./tests/"
}
}
}
Btw, it used in current project.
Read existing composer.json file
require __DIR__ . '/vendor/autoload.php'; use \ComposerJson\Generator; $generator = new Generator(); $generator->read(__DIR__ . '/composer.json'); $array = $generator->toArray(); $json = $generator->toJson(); //var_dump($array); echo $json . PHP_EOL;
Links
- https://getcomposer.org/doc/04-schema.md
- https://github.com/spatie/schema-org - My project inspired by this library