# 命令行界面
<p class="uk-article-lead">Pagekit 通过它的命令行界面(CLI)暴露了它面向开发者的一些核心功能。许多命令都可以提供有用的工具和助手。</p>
## 基础用法
打开终端,并进入已安装的 Pagekit 的目录中。该目录中的`pagekit`脚本(不是文件扩展)是一个 PHP 脚本,它可以从命令行中运行。
```sh
cd /var/www/pagekit # navigate to pagekit directory
./pagekit # run pagekit CLI script
```
**Note** 你可能需要用`chmod +x pagekit`命令来让这个脚本可运行。或者,可以直接调用 PHP 解释器 `php pagekit`。
在不使用参数调用 CLI 工具时,它会输出 Pagekit 的版本号,一些基础的使用方法信息以及可用的命令列表。
```txt
$ ./pagekit
Pagekit version 1.0.3
Usage:
command [options] [arguments]
Options:
-h, --help 显示此命令的帮助信息
-q, --quiet 不输出任何信息
-V, --version 显示应用程序的版本
--ansi 强制 ANSI 输出
--no-ansi 禁用 ANSI 输出
-n, --no-interaction 不询问任何交互式问题
-v|vv|vvv, --verbose 增加信息的冗长:1,正常的输出信息;2,更冗长的输出;3,调试信息
可用的命令:
archive 将扩展或主题存档
build 构建 .zip 发布文件
clearcache 清除系统缓存
help 显示命令的帮助信息
install 安装一个 Pagekit 包
list 列出所有命令
migrate 迁移 Pagekit
self-update 检查 Pagekit 新版本并安装最新版
setup Setup a Pagekit installation
start 启动内置的 web 服务器
uninstall 卸载 Pagekit 包
update 更新 Pagekit 包的依赖
extension
extension:translate 生成扩展的翻译文件 .pot/.po/.php
translation
translation:fetch 从 languages 仓库获取当前的翻译文件
```
要运行命令,可以在调用 CLI 工具时添加一些参数。例如,在商店中安装 Hello 扩展,可以像下面这样做:
```sh
./pagekit install pagekit/hello
```
## 可用命令
可用命令包含面向扩展和主题开发者的助手,也有帮助 Pagekit 开发组更轻松维护 Pagekit 项目的工具(比如 `build` 命令)。
### 构建包的档案文件/Build package archive
从主题或扩展创建可安装的 `*.zip` 档案文件,运行此命令并提供要构建的包的路径。下面的命令会在 Pagekit 安装的顶级目录中创建一个 `pagekit-hello.zip` 文件。
例子:
```sh
./pagekit archive pagekit/hello
```
用法、参数和选项:
```sh
Usage:
archive [options] [--] <name>
Arguments:
name 包的名称
Options:
--dir[=DIR] 将档案写入此目录
```
### 构建 Pagekit 发布档案
此命令被 Pagekit 维护者用来构建 Pagekit 发布包。它会在 Pagekit 根目录创建一个 `*.zip` 档案文件。发布包会用在官网的下载链接中,或者作为可交付的自定义安装,比如交付给你的客户。
例子:
```sh
./pagekit build
```
用法(无参数,无选项):
```sh
Usage:
build
```
### 清除缓存
使用 `clearcache` 命令来清空缓存。此命令会移除缓存目录中的所有 `*.cache` 文件,一般情况下是在 `tmp/cache` 目录中。
例子:
```sh
./pagekit clearcache
```
用法(无参数,无选项):
```sh
Usage:
clearcache
```
### 显示任意 CLI 命令的用法信息
了解一个命令的实际作用和如何使用,可以使用 `help` 命令。
例子:
```sh
./pagekit help install
```
用法和参数:
```
Usage:
help [options] [--] [<command_name>]
Arguments:
command 要执行的命令
command_name 命令的名称【默认:”help“】
Options:
--format=FORMAT 输出格式(txt, xml, json, or md) [默认: "txt"]
```
### 从 Pagekit 商店安装一个包
例子:
```sh
./pagekit install pagekit/hello
```
用法,参数,和选项:
```sh
Usage:
install [options] [--] <packages> (<packages>)...
Arguments:
packages [Package name]:[Version constraint]
Options:
--prefer-source Forces installation from package sources when possible, including VCS information.
```
### 列出可用的命令
使用 `list` 命令可以列出所有可用的命令。它会输出的结果与运行不含参数的 CLI脚本产生的结果是相同的。
例子:
```sh
./pagekit list
```
用法,参数,和选项:
```sh
Usage:
list [options] [--] [<namespace>]
Arguments:
namespace 命名空间名称
Options:
--raw To output raw command list
--format=FORMAT 输出格式(txt, xml, json, or md) [默认: "txt"]
```
### 运行 Pagekit 迁移
在 Pagekit 新版本被安装后,系统有时需要修改数据库结构。这些修改被聚合在所谓的 _迁移(migrations)_ 中。要运行所需的任何迁移,可以使用 `migrate` 命令。一般来说,你并不需要明确地这样做。当你登入到管理区域时,Pagekit 也会检查是否有可用的迁移,如果有必要就会执行迁移程序。
Example:
```sh
./pagekit migrate
```
用法(无参数无选项):
```sh
Usage:
migrate
```
### 升级 Pagekit
在终端升级 Pagekit。可选地,你可以提供一个用于运行升级的 Pagekit 包的链接。在这种情况下,你还需要提供一个有效的 SHA hash 来验证下载的文件。如果没有提供 URL 和 hash,此命令会使用来自于 pagekit.com 最近的 Pagekit 包。
Example:
```sh
./pagekit self-update
```
用法和选项:
```sh
Usage:
self-update [options]
Options:
-u, --url=URL
-s, --shasum=SHASUM
```
### 实施完整的 Pagekit 安装
你可以不必打开浏览器,在终端执行命令来启动全新的 Pagekit 安装程序。这可以用于自动化安装,面向你自己或客户的项目。
使用 SQLite 安装 Pagekit 和设置默认管理员用户admin的例子:
```sh
./pagekit setup --password=<SOMETHING-SECURE>
```
用法和选项:
```sh
Usage:
setup [options]
Options:
-u, --username=USERNAME 管理员用户名 [默认: "admin"]
-p, --password=PASSWORD 管理员用户密码
-t, --title[=TITLE] 网站标题 [默认: "Pagekit"]
-m, --mail[=MAIL] 管理员账号邮箱 [默认: "admin@example.com"]
-d, --db-driver=DB-DRIVER 数据库驱动器('sqlite' or 'mysql') [default: "sqlite"]
--db-prefix[=DB-PREFIX] 数据库前缀 [default: "pk_"]
-H, --db-host[=DB-HOST] MySQL 主机
-N, --db-name[=DB-NAME] MySQL 数据库名
-U, --db-user[=DB-USER] MySQL 用户名
-P, --db-pass[=DB-PASS] MySQL 密码
-l, --locale[=LOCALE] Locale
```
### 启动内置的 web 服务器
实际上你不需要完整的 Apache 服务器设置。你可以在本地机器上使用 `start` 命令来运行一个独立的服务器实例。命令会一直运行,直到你使用 CTRL+C 退出服务器实例。
```sh
./pagekit start --server=127.0.0.1:8080
```
用法和选项:
```
Usage:
start [options]
Options:
-s, --server[=SERVER] 服务器名称和端口 [默认: "127.0.0.1:8080"]
```
### 卸载 Pagekit 包
从 Pagekit 中移除主题或扩展。
Example:
```sh
./pagekit uninstall pagekit/hello
```
用法和参数
```
Usage:
uninstall <packages> (<packages>)...
Arguments:
packages [Package name]
```
### 从包中解析翻译字符串
在创建主题或扩展时,你可以也应该使用 Pagekit 的国际化系统使用户界面可以显示多种语言。简单说,这是通过将字符串包裹在特定的函数调用(比如 PHP 模板的 `__('Translate me!')` 或 Vue 模板的 `{{ 'Translate me!' |trans }}`)中。`extension:translate` 命令会在主题或扩展中找到所有这种函数调用,并将所有可翻译的字符串收集起来写入到指定的包的 `languages/` 子目录中。这些文件可以用于创建包的翻译,比如使用 [Transifex](https://www.transifex.com/pagekit/pagekit-cms/) 这种服务。
Example:
```sh
./pagekit extension:translate pagekit/blog
```
用法和参数:
```sh
Usage:
extension:translate [<extension>]
Arguments:
extension Extension name
```
### 获取新的翻译文件
**弃用警告** 此命令将被替换。
This command is used by the Pagekit core maintainers to fetch translations from the Pagekit translation repository. The translation workflow and file structure is currently under discussion and this command will probably replaced in a future version of Pagekit.
Example:
```sh
./pagekit translation:fetch
```
Usage:
```sh
Usage:
translation:fetch
```