werbfred / composer-package-updater
本项目提供了一种在安装、更新和卸载包时执行脚本的方案。
Requires
- php: >=7.0.0
This package is auto-updated.
Last update: 2024-09-26 21:52:14 UTC
README
本项目提供了一种在安装、更新和卸载包时执行脚本的方案。
目前只执行根目录下的 composer.json 文件中定义的脚本。这是对 Composer 的 问题 1993 的一个解决方案。
出于安全考虑,Composer\Script\PackageEvent 只会将这些事件转发给触发这些事件的包。
以我的情况为例,我在一个 Git 仓库中托管了 Drupal 模块和主题。一旦通过 composer 安装/更新,我想要
- 运行 compass 来生成 .css 文件
- 删除一些文件 (.gitignore, .sass 目录,...)
每个模块或主题负责执行自己的安装/更新/卸载任务。
设置它!
通过 packagist 安装此项目
composer require werbfred/composer-package-updater
打开根目录下的 composer.json 文件,用以下配置更新它
自动加载
将 "ComposerPackageUpdater\\composer\\": "vendor/werbfred/composer-package-updater/src/composer"
添加到 autoload
部分的 psr-4
。
示例
"autoload": {
"psr-4": {
"ComposerPackageUpdater\\composer\\": "vendor/werbfred/composer-package-updater/src/composer"
}
}
这将告诉 Composer 指定命名空间文件的位置。在我们的例子中,Composer 将能够加载我们的 PackageUpdater 类。
注意: 关于 autoload
部分的更多信息可以在这里找到 here。
脚本
将以下条目添加到 scripts
部分中。
"scripts": {
"pre-package-install": "ComposerPackageUpdater\\composer\\PackageUpdater::processPackageEvent",
"post-package-install": "ComposerPackageUpdater\\composer\\PackageUpdater::processPackageEvent",
"pre-package-update": "ComposerPackageUpdater\\composer\\PackageUpdater::processPackageEvent",
"post-package-update": "ComposerPackageUpdater\\composer\\PackageUpdater::processPackageEvent",
"pre-package-uninstall": "ComposerPackageUpdater\\composer\\PackageUpdater::processPackageEvent",
"post-package-uninstall": "ComposerPackageUpdater\\composer\\PackageUpdater::processPackageEvent"
}
上述操作将确保以下 PackageEvents 可以被转发
- pre-package-install
- post-package-install
- pre-package-update
- post-package-update
- pre-package-uninstall
- post-package-uninstall
注意: 关于 scripts
部分的更多信息可以在这里找到 here 和 there。
配置
必须在 extra
部分的 dependency-scripts
下添加配置。
参数
示例
"extra": {
"dependency-scripts": {
"run": true,
"trust": [ "dummy"
, "foobar" ]
}
}
注意: 关于 extra
部分的更多信息可以在这里找到 here。
我需要在包的 composer.json* 文件中放入什么内容?
现在您可以填充自己的 scripts
部分了。
请注意: autoloads
部分中的路径必须相对于您的包位置。
有用的链接
- composer.json 架构: https://getcomposer.org.cn/doc/04-schema.md
- 关于脚本的更多信息: https://getcomposer.org.cn/doc/articles/scripts.md