dev-master
9999999-dev http://venne.czSimple solution for managing packages in Nette framework
GPL-3.0 BSD-3-Clause GPL-2.0
The Requires
The Development Requires
by Josef Kříž
manager nette packages
Simple solution for managing packages in Nette framework
Simple solution for managing packages in Nette framework., (*1)
What problems can it solve?, (*2)
Nette\Compiler
config.neon
%wwwDir%
Install package manager, (*3)
composer require venne/packages:@dev // as a dependency # composer create-project venne/packages:@dev // aside from the project
add hooks to root composer.json
file, (*4)
{ "scripts": { "post-install-cmd": [ "vendor/bin/package-manager sync --composer" ], "post-update-cmd": [ "vendor/bin/package-manager sync --composer" ] } }
Use it by composer commands, (*5)
composer require kdyby/doctrine
If you have already created composer.json
file, you're done ;), (*6)
Metadata, (*7)
Metadata allow you to define advanced features:, (*8)
relativePublicPath
: directory with asset files.configuration
: array will be copied to config.neon
file.installers
: array of classes implements Venne\Packages\IInstaller
.There are three ways how to define metadata:, (*9)
composer.json
:{ "extra": { "venne": { "relativePublicPath": "/Resources/public", "configuration": { "extensions": { "translation": "Kdyby\\Translation\\DI\\TranslationExtension" } }, "installers": [ "Namespace\MyInstaller" ] } } }
.venne.php
file:Implement interface Venne\Packages\IPackage
, (*10)
<?php namespace MyProject; class Package extends \Venne\Packages\Package {}
venne/packages-metadata
repository:Fork and edit https://github.com/Venne/packages-metadata, (*11)
Package manager can provide some services which you can use it in your application. Make sure that you have installed package manager as dependency:, (*12)
composer require venne/packages:@dev
Now you are using it as regular package. Not only independent package manager., (*13)
Venne\Packages\PathResolver
Service for resolving paths to packages by @
syntax. Use .
as separator between project and package name. For example: @kdyby.doctrine
., (*14)
$pathResolver = $container->getByType('Venne\Packages\PathResolver'); echo $pathResolver->expandPath('@my.package/foo/bar'); // /path_to_my_package/foo/bar echo $pathResolver->expandResource('@my.package/foo/bar'); // {$resourcesDir}/my/package/foo/bar
New macros and new possibilities in classic macros:, (*15)
{path @my.package/file} // browser_path_to_my.package/file {extends @my.package/@layout.latte} // extends from other package {includeblock @my.package/@layout.latte} // include blocks from template
vendor/bin/package-manager list # List packages vendor/bin/package-manager sync # Synchronize all packages with filesystem vendor/bin/package-manager install <name> # Install package vendor/bin/package-manager uninstall <name> # Uninstall package
composer require foo/bar:2.0.x [--prefer-dist] # Download package vendor/bin/package-manager update # Update local database of packages vendor/bin/package-manager install foo.bar # Install package
Simple solution for managing packages in Nette framework
GPL-3.0 BSD-3-Clause GPL-2.0
manager nette packages