共享 WP-CLI 软件包

默认情况下,WP-CLI 将已安装的软件包放在 ~/.wp-cli/packages/ 中,这是用户主目录下的一个隐藏子目录。

由于每个用户的主目录不同,每个系统用户自然也会有一个独立的已安装软件包目录。如果服务器上有多个活跃的 shell 用户,并且你希望他们共享已安装的 WP-CLI 软件包,可以使用以下几种受支持的方法。

WP_CLI_PACKAGES_DIR 环境变量

要覆盖 WP-CLI 用来存放已安装软件包的目录,请提供 WP_CLI_PACKAGES_DIR 环境变量。如果希望多个用户共享同一个软件包目录,只需为每个用户提供相同的 WP_CLI_PACKAGES_DIR 环境变量。

vim /etc/environment
export WP_CLI_PACKAGES_DIR=/usr/local/lib/wp-cli-packages

同样,你可以确保该目录仅允许某个指定用户写入,从而让所有用户都能使用软件包,但只有指定用户能够安装软件包。

需要注意,WP_CLI_PACKAGES_DIR 环境变量会覆盖 WP-CLI 默认加载用户主目录中已安装软件包的行为。如果希望同时支持这两种来源,就需要采用第二种方法。

共享目录中的 Composer 项目

WP-CLI 的已安装软件包目录,在底层其实就是一个 Composer 项目。基于这种架构,你可以在任意目录中创建自己的 Composer 项目,再使用 WP-CLI 的 --require=<path> 参数将其加载到作用域中。

首先,创建 Composer 项目。

$ mkdir /usr/local/lib/wp-cli-packages
$ cd /usr/local/lib/wp-cli-packages
$ composer init -n --name=runcommand/wp-cli-packages -s=dev --repository=https://wp-cli.org/package-index/
$ composer require runcommand/hook
Using version dev-master for runcommand/hook
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing runcommand/hook (dev-master 7a7beae)
    Cloning 7a7beae2013eeea243cc44524a7c5c21da11979e

Writing lock file
Generating autoload files

现在,Composer 项目有了一两个依赖之后,就可以使用 wp --require=<path/to/autoload>(或等效的 config.yml 配置语句)将这些软件包加载到 WP-CLI 中。


原文:Sharing WP-CLI Packages,作者:WP-CLI 贡献团队。版权 © 2012–2022 WP-CLI Development Group(贡献者)。原文仓库采用 MIT 许可。本中文翻译修改于 2026-10-03;代码保持原样。以下保留完整版权及许可声明。

The MIT License (MIT)

Copyright (C) 2012-2022 WP-CLI Development Group (https://github.com/wp-cli/handbook/contributors)

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容