laravel-shift / cli
Shift 的 CLI 工具,用于运行自动化任务
Requires
- php: ^8.1
README
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-migrations
和 facades-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_dump
、print_r
、dd
等)的调用。 - declare-strict: 确保 PHP 文件声明
strict_types=1
。 - down-migration: 从迁移中删除
down
方法。 - explicit-orderby: (默认)确保查询使用
orderBy
和orderByDesc
方法,而不是字符串参数。 - facade-aliases: (默认)确保对 Laravel 门面的引用是完全限定的,而不是全局别名。
- faker-methods: (默认)将 Faker 数据转换为方法调用,而不是已弃用的属性访问。
- laravel-carbon: 将对
Carbon\Carbon
的引用转换为使用Illuminate\Support\Carbon
包装器。 - latest-oldest: 确保查询使用
latest
和oldest
方法,而不是长字符串的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 还附带两个其他命令:publish
和 discover
。
publish
命令生成 Shift CLI 配置文件 - shift-cli.json
。生成的配置文件包括所有默认设置。您可以自定义配置文件来指定默认运行的任务、额外的忽略路径以及个别任务的选项。
discover
命令重新生成 Shift CLI 任务清单。每当 Shift CLI 更新时,这会自动完成。然而,如果您已经包含提供 Shift CLI 任务的其他包,您可能需要运行此命令。
支持策略
Shift CLI 中的自动化任务优先考虑 Laravel 的最新稳定版本(目前为 Laravel 10)。虽然当 Laravel 新版本发布时会有一个宽限期,但您被鼓励保持您的应用程序更新(尝试使用 Shift)。
贡献
欢迎以提交问题或提交拉取请求的形式进行贡献。对于要考虑的问题,它们应遵循某个模板。对于要考虑的拉取请求,它们应包含测试,并且所有检查都应通过。