robloach / component-installer
Requires
- php: >=5.3.2
- composer-plugin-api: ^1.0
- kriswallsmith/assetic: 1.*
Requires (Dev)
- composer/composer: 1.*@alpha
- phpunit/phpunit: 4.*
This package is auto-updated.
Last update: 2020-08-10 00:09:55 UTC
README
Component Installer 已被弃用。请使用以下项目之一代替
- Composer Installers Extender
- Asset Packagist
- Composer Asset Plugin
- Laravel Mix(示例: eventum/eventum#801 和 eventum/eventum#812)
示例
composer require oomphinc/composer-installers-extender
"extra": {
"installer-types": ["component"],
"installer-paths": {
"components/{$name}/": ["type:component"]
}
}
为 Composer 的
允许通过 Composer 安装组件。
安装
composer require robloach/component-installer
{ "require": { "robloach/component-installer": "*" } }
用法
要使用 Composer 安装组件,请将组件添加到您的 composer.json 文件的 require
键中。以下示例将安装 jQuery 和 normalize.css
composer require components/jquery
composer require components/normalize.css
{ "require": { "components/jquery": "2.*", "components/normalize.css": "3.*", "robloach/component-installer": "*" } }
使用组件
最简单的方法是静态地使用组件。只需使用 script
或 link
标签手动引用组件即可
<script src="components/jquery/jquery.js"></script> <link href="components/normalize/normalize.css" rel="stylesheet">
对于复杂的项目,提供了一个 RequireJS 配置,它允许在需要时自动加载脚本。还会编译一个 require.css 文件,包括所有组件样式表
<!DOCTYPE html> <html> <head> <link href="components/require.css" rel="stylesheet" type="text/css"> <script src="components/require.js"></script> </head> <body> <h1>jQuery+RequireJS Component Installer Sample Page</h1> <script> require(['jquery'], function($) { $('body').css('background-color', 'green'); }); </script> </body> </html>
配置
有多种方法可以更改组件的安装和使用方式。
安装目录
您可以通过更改根 composer.json 文件的 config
中的 component-dir
选项来切换组件的安装位置。以下示例将 jQuery 安装到 public/jquery 而不是 components/jquery
{ "require": { "components/jquery": "*" }, "config": { "component-dir": "public" } }
默认为 components
。
基本 URL
虽然 component-dir
描述了组件将被安装的位置,但 component-baseurl
告诉 RequireJS 当在浏览器中尝试加载脚本时要使用的基路径。确保在加载外部内容时 component-baseurl
指向 component-dir
。有关 baseUrl
的更多信息,请参阅 RequireJS 文档中的 baseUrl
{ "require": { "components/jquery": "*" }, "config": { "component-dir": "public/assets", "component-baseurl": "/assets" } }
默认为 components
。
Assetic 过滤器
{ "require": { "components/jquery": "*" }, "config": { "component-dir": "public/assets", "component-baseurl": "/assets", "component-scriptFilters": { "\\Assetic\\Filter\\GoogleClosure\\CompilerApiFilter": [] }, "component-styleFilters": { "\\Assetic\\Filter\\CssImportFilter": [] } } }
创建组件
为了将组件与组件安装器一起安装,需要使它 require
包 robloach/component-installer 并将 type
设置为 component,但这不是必需的
{ "name": "components/bootstrap", "type": "component", "require": { "robloach/component-installer": "*" }, "extra": { "component": { "scripts": [ "js/bootstrap.js" ], "styles": [ "css/bootstrap.css" ], "files": [ "img/*.png", "js/bootstrap.min.js", "css/bootstrap.min.css" ] } } }
scripts
- 将在加载组件时连接在一起并处理的 JavaScript 文件列表。styles
- 应该连接到最终的 require.css 文件的所有 CSS 文件列表。files
- 应该复制到组件目录中的任何其他文件资产。
组件名称
组件可以提供自己的组件名称。以下示例将 jQuery 安装到 components/myownjquery 而不是 components/jquery
{ "name": "components/jquery", "type": "component", "extra": { "component": { "name": "myownjquery" } } }
默认为包名,不带供应商。
RequireJS 配置
通过更改一些配置选项,组件可以更改如何由 RequireJS 注册和与之交互
{ "name": "components/backbone", "type": "component", "require": { "components/underscore": "*" }, "extra": { "component": { "shim": { "deps": ["underscore", "jquery"], "exports": "Backbone" }, "config": { "color": "blue" } } }, "config": { "component": { "waitSeconds": 5 } } }
为单个包当前可用的 RequireJS 选项包括
没有 Composer 支持的包
在 composer.json 中使用 repositories
允许在未显式提供自己的 composer.json 的包中使用组件安装器。在以下示例中,我们定义了 html5shiv 的使用
{ "require": { "afarkas/html5shiv": "3.6.*" }, "repositories": [ { "type": "package", "package": { "name": "afarkas/html5shiv", "type": "component", "version": "3.6.2", "dist": { "url": "https://github.com/aFarkas/html5shiv/archive/3.6.2.zip", "type": "zip" }, "source": { "url": "https://github.com/aFarkas/html5shiv.git", "type": "git", "reference": "3.6.2" }, "extra": { "component": { "scripts": [ "dist/html5shiv.js" ] } }, "require": { "robloach/component-installer": "*" } } } ] }
在 composer.json 中没有组件支持的包
在 composer.json 中使用 extra
允许在未显式提供组件支持但包含自己的 composer.json 的包中使用组件安装器。使用带有组件安装器的包的 extra
将覆盖该包的组件设置。
{ "require": { "datatables/datatables": "~1.10" }, "extra": { "component": { "datatables/datatables": { "scripts": [ "media/js/jquery.dataTables.js" ], "styles": [ "media/css/jquery.dataTables.css" ], "files": [ "media/js/jquery.dataTables.min.js", "media/css/jquery.dataTables.min.css", "media/images/*.png" ] } } } }
非原创
Component Installer 吸取了来自许多其他令人惊叹项目的灵感。鼓励查看一些 其他优秀的包管理系统
许可证
Component Installer 在 MIT 许可证下许可 - 详细内容请参阅 LICENSE.md。