Shift 的 CLI 工具,用于运行自动化任务

v0.3.1 2024-06-14 13:55 UTC

This package is auto-updated.

Last update: 2024-09-14 14:36:31 UTC


README

Build Status Latest Stable Version License

Shift CLI

Shift 提供的工具,用于在您的 Laravel 项目中运行自动化任务以重构和现代化。

Shift CLI 替换了 Shift Workbench 桌面应用程序 - 允许您在本地 PHP 环境中方便地运行相同的任务。无 Electron,无 Docker。与 Workbench 类似,免费任务可以立即运行。高级任务需要 许可证

安装

Shift CLI 作为 PHAR 打包,因此没有依赖项,可以无冲突安装。要在 Laravel 项目中使用 Shift CLI,您可以通过运行以下命令将其本地安装:

composer require --dev laravel-shift/cli

要轻松地在所有 Laravel 项目中使用 Shift CLI,您可以通过运行以下命令将其全局安装:

composer global require laravel-shift/cli

基本用法

使用 Shift CLI 的推荐方法是直接在 Laravel 项目的根目录下运行 shift-cli 命令。这将运行默认的自动化任务集。默认任务基于 Laravel 最新版本及其文档化示例中发现的约定。

要运行单个任务或多个任务,您可以将它们按名称传递给 run 命令。例如,要运行 anonymous-migrationsfacades-aliases 任务,您可以运行:

shift-cli run anonymous-migrations facade-aliases

默认情况下,自动化运行针对您当前路径下的所有 PHP 文件。要限制自动化到路径或文件,您可以设置 --path 选项。例如,要针对仅 database/migrations 目录运行 anonymous-migrations 任务,您可以运行:

shift-cli run --path=database/migrations anonymous-migrations

您还可以使用 --dirty 选项仅针对自上次提交以来已更改的文件运行自动化。例如,要针对未提交的 PHP 文件运行 anonymous-migrations 任务,您可以运行:

shift-cli run --dirty anonymous-migrations

自动化任务

要查看所有可用任务的列表,您可以运行:shift-cli --tasks

以下是此包包含的免费任务列表

  • anonymous-migrations: (默认)将基于类的数据库迁移转换为匿名类。
  • check-lint: 检查 PHP 文件是否存在语法错误。
  • class-strings: (默认)将包含类引用的字符串转换为使用 ::class 的实际引用。
  • debug-calls: 从代码中删除对调试函数(如 var_dumpprint_rdd 等)的调用。
  • declare-strict: 确保 PHP 文件声明 strict_types=1
  • down-migration: 从迁移中删除 down 方法。
  • explicit-orderby: (默认)确保查询使用 orderByorderByDesc 方法,而不是字符串参数。
  • facade-aliases: (默认)确保对 Laravel 门面的引用是完全限定的,而不是全局别名。
  • faker-methods: (默认)将 Faker 数据转换为方法调用,而不是已弃用的属性访问。
  • laravel-carbon: 将对 Carbon\Carbon 的引用转换为使用 Illuminate\Support\Carbon 包装器。
  • latest-oldest: 确保查询使用 latestoldest 方法,而不是长字符串的 orderBy 方法。
  • model-table: (默认)从遵循 Laravel 约定的模型中删除 table 属性。
  • order-model: 按可见性和方法类型对模型类进行排序。
  • remove-docblocks: 从代码中删除 PHP DocBlocks。
  • rules-arrays:(默认)确保表单请求规则被定义为数组,而不是字符串。

高级用法

Shift CLI 的目的是集成到您的开发流程中。其重点是对您的代码进行重构并确保项目之间的代码一致性。因此,它与代码格式化工具搭配得很好。Shift 推荐使用 Laravel Pint,因为它是一个默认应用 Laravel 代码风格的官方包。它还使用了 PHP CS Fixer,因此您可以使用所有相同的选项轻松配置它。当然,您也可以直接使用 PHP CS Fixer 或其他代码格式化工具,如 PHP CodeSniffer

例如,要一起运行 Shift CLI 和 Pint,您可以运行

shift-cli && pint

更进一步,您可以通过设置自己的 Composer 脚本来自动化此过程。例如,要一起运行 Shift CLI 和 Pint,您可以在您的 composer.json 文件中添加以下内容

{
    "scripts": {
        "lint": [
            "shift-cli",
            "pint"
        ]
    }
}

您可以通过将 --dirty 选项传递给 Shift CLI 和 Pint 来优化此脚本。一旦添加了此脚本,您就可以运行:composer lint

此外,您可以将 shift-cli 命令添加到 pre-commit 钩子中,以确保在提交之前始终运行自动化。

最后,我们鼓励您将 shift-cli 添加到您的 CI 工作流程中。例如,您可以将 shift-cli 作为每个 Pull Request 的一部分来运行,以确保所有合并的代码都遵循 Laravel 规范。

有关设置 Composer 脚本和 pre-commit 钩子的示例,请参阅 Laracasts 上的 Shift CreatorSeries

其他命令

Shift CLI 还附带两个其他命令:publishdiscover

publish 命令生成 Shift CLI 配置文件 - shift-cli.json。生成的配置文件包括所有默认设置。您可以自定义配置文件来指定默认运行的任务、额外的忽略路径以及个别任务的选项。

discover 命令重新生成 Shift CLI 任务清单。每当 Shift CLI 更新时,这会自动完成。然而,如果您已经包含提供 Shift CLI 任务的其他包,您可能需要运行此命令。

支持策略

Shift CLI 中的自动化任务优先考虑 Laravel 的最新稳定版本(目前为 Laravel 10)。虽然当 Laravel 新版本发布时会有一个宽限期,但您被鼓励保持您的应用程序更新(尝试使用 Shift)。

贡献

欢迎以提交问题或提交拉取请求的形式进行贡献。对于要考虑的问题,它们应遵循某个模板。对于要考虑的拉取请求,它们应包含测试,并且所有检查都应通过。