Asset Packagist 提供关于Bower和NPM包的信息,类似于Packagist为Composer包的信息。
因此,当您在启用资源包(Asset Package)的项目中运行
composer
,composer知道bower-asset和npm-asset包的所有可用版本,并知道如何下载它们的文件。
首先将 Bower 和 NPM 包 加入到我们自己的仓库中. 脚本会收集包信息并且以Packagist的格式处理json文件.
例如,你可以看看我们有什么用 Bower moment
包:
https://asset-packagist.cn/p/bower-asset/moment/latest.json
该文件包含了该包的所有版本的说明,格式如下:
"2.13.0.0": {
"uid": 1000600,
"name": "bower-asset/moment",
"version": "2.13.0.0",
"type": "bower-asset",
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/moment/moment/zipball/d6651c21c6131fbb5db891b60971357739015688",
"reference": "d6651c21c6131fbb5db891b60971357739015688"
},
"source": {
"type": "git",
"url": "https://github.com/moment/moment.git",
"reference": "d6651c21c6131fbb5db891b60971357739015688"
}
},
所以,当您运行composer
时,它会下载Asset Packagist 库提供的包信息,然后 Composer 解析依赖项并找到所需包的正确版本,然后将包文件下载到项目的vendor
目录中
(实际上composer并不关心这些文件是PHP还是JS或其他文件).
所有的JSON文件都作为静态文件存储在 Asset Packagist 端, 项目中 Composer 会有效的找到这些文件,这样一切都能尽快完成。
Asset Packagist 不是插件, 所以他不受 Composer的包安装位置所限制.
默认 bower-asset/bootstrap
包将会安装到
vendor/bower-asset/bootstrap
目录中.
你可以通过 oomphinc/composer-installers-extender
插件,来自定义安装路径,如:
"require": {
"oomphinc/composer-installers-extender": "^1.1",
"bower-asset/bootstrap": "^3.3",
"npm-asset/jquery": "^2.2"
},
"extra": {
"installer-types": ["bower-asset", "npm-asset"],
"installer-paths": {
"public/assets/{$vendor}/{$name}/": ["type:bower-asset", "type:npm-asset"]
}
},
"repositories": [
{
"type": "composer",
"url": "https://asset-packagist.cn"
}
]
Yii2 默认会将 Bower 和 NPM 包 分别安装到 vendor/bower
和 vendor/npm
目录中.
因此, 在Yii2项目中引用 asset-packagist, 必须在程序的配置文件中重新指定 Bower 和 NPM 别名的映射,如:
$config = [
...
'aliases' => [
'@bower' => '@vendor/bower-asset',
'@npm' => '@vendor/npm-asset',
],
...
];
在同一台服务器中运行了多个应用时,从 composer-asset-plugin迁移是个麻烦事. 你需要注意:当这个插件在全局安装时, asset packagist
与 asset plugin 同时存在会有冲突. 所以, 为了不影响其他应用的情况下停掉这个插件, 你可以通过在 composer.json
文件中 config 选项中禁用掉这个插件。 (你的 plugin 版本需要 ≥ 1.3.0 ):
"config": {
"fxp-asset": {
"enabled": false
}
}
提供优化版本的中文开发者 haohetao/asset-packagist.dev
原始作者 hiqdev/asset-packagist.dev
这个项目基于 Francois Pluchino's composer-asset-plugin 来转换 Bower 和 NPM 包信息成为 Composer 格式.
搜索驱动 https://libraries.io/.