venne / packages
Nette 框架中管理包的简单解决方案
dev-master
2015-03-03 07:23 UTC
Requires
- php: >=5.5.0
- kdyby/console: @dev
- latte/latte: 2.3@dev
- nette/di: 2.3@dev
- nette/utils: 2.3@dev
Requires (Dev)
- nette/tester: ~1.3.2
- phing/phing: ~2.10.1
- squizlabs/php_codesniffer: ~1.5.0
This package is auto-updated.
Last update: 2024-08-29 03:16:59 UTC
README
Nette 框架中管理包的简单解决方案。
它能解决哪些问题?
- 注册
Nette\Compiler
的扩展 - 在
config.neon
中创建默认配置结构 - 将资产目录发布到
%wwwDir%
- 通过简单语法解析包路径
安装
安装包管理器
composer require venne/packages:@dev // as a dependency
# composer create-project venne/packages:@dev // aside from the project
将钩子添加到根 composer.json
文件
{ "scripts": { "post-install-cmd": [ "vendor/bin/package-manager sync --composer" ], "post-update-cmd": [ "vendor/bin/package-manager sync --composer" ] } }
通过 composer 命令使用它
composer require kdyby/doctrine
包定义
如果你已经创建了 composer.json
文件,你已经完成了 ;)
元数据
元数据允许你定义高级功能
relativePublicPath
:资产文件所在的目录。configuration
:将复制到config.neon
文件的数组。installers
:实现Venne\Packages\IInstaller
的类的数组。
定义元数据有三种方式
1) 在 composer.json
{ "extra": { "venne": { "relativePublicPath": "/Resources/public", "configuration": { "extensions": { "translation": "Kdyby\\Translation\\DI\\TranslationExtension" } }, "installers": [ "Namespace\MyInstaller" ] } } }
2) 在 .venne.php
文件中
实现接口 Venne\Packages\IPackage
<?php namespace MyProject; class Package extends \Venne\Packages\Package {}
3) 在 venne/packages-metadata
仓库中
分支并编辑 https://github.com/Venne/packages-metadata
额外功能
包管理器可以提供一些服务,你可以在应用程序中使用它们。确保你已经将包管理器作为依赖项安装
composer require venne/packages:@dev
现在你正在将其作为常规包使用。不仅仅是独立的包管理器。
服务 Venne\Packages\PathResolver
通过 @
语法解析包路径的服务。使用 .
作为项目和包名之间的分隔符。例如:@kdyby.doctrine
。
$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
宏
新的宏和经典宏中的新可能性
{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