lform / pretty-code
Lform的中心化管理代码样式和linting配置
Requires
- php: ^7.4|^8.0
- friendsofphp/php-cs-fixer: ^3.46
- phpstan/phpstan: ^1.8
This package is auto-updated.
Last update: 2024-10-02 18:12:27 UTC
README
Pretty Code 是一个由githook驱动的PHP、CSS、HTML和JavaScript的lint器和格式化配置集合。它也适用于每个项目的自定义,这对于处理旧代码库、非常规或问题代码库非常有用。
当这个包更新时,运行 composer update
或 npm update
将拉取最新的配置更改,除了你在项目中覆盖的任何内容。这允许你轻松更新配置,而无需手动更新文件。
目录
要求
- 环境:OSX、Linux、WSL
- PHP 7.4+
- Node 20+
安装
重要:必须安装此包的NPM部分才能使用由githook驱动的lint器和格式化器。即使你使用Composer包也是如此。
此包设计用于在Linux和OSX环境中工作。目前不支持Windows。
NPM安装
这将安装包的前端部分以及由githook驱动的自动化。
npm install --save-dev @lform/pretty-code
Composer安装
这将安装包的PHP部分。
composer require --dev lform/pretty-code
Laravel & PHPStan
对于基于Laravel的项目,安装Larastan,这将配置PHPStan以在Laravel项目中使用。
安装Larastan
-
通过Composer安装Larastan(请参阅文档)
-
在项目根目录中创建一个
phpstan.neon
文件或从pretty-code
中复制一个 -
编辑
.lintstagedrc.json
文件,并从phpstan
中删除预设配置路径,以便它默认使用项目根目录配置。 -
将项目根目录中的
phpstan.neon
文件中的larastan扩展添加到includes: - vendor/larastan/larastan/extension.neon
初始化
一旦安装了这些包,就必须通过 npm
初始化该包以执行一些操作
- 如果尚不存在,将
.lintstagedrc.json
配置复制到项目根目录 - 将预先配置的
.githooks
目录复制到项目根目录以触发git自动化。如果目录已存在,初始化脚本将不会覆盖它。 - 如果尚不存在,将
.editorconfig
配置复制到项目根目录 - 将项目git仓库的
core.hooksPath
配置为使用新的.githooks
目录。 - 在
package.json
中添加新脚本来手动运行lint器和格式化器。
对于Composer,初始化将仅将新脚本添加到 composer.json
以手动运行lint器和格式化器。
之后,一旦确认一切正常工作,应将这些新文件和更改提交到git。请参阅以下内容以了解如何初始化包。
NPM初始化
npx pretty-code init
Composer初始化
vendor/bin/pretty-code init
故障排除
PHPStan问题
PHPStan非常有帮助,但可能在具有旧代码库或使用非常规方法的项目的源中引起烦恼。可以采取一些措施来解决这些问题
- 如果是Laravel项目,请安装Larastan(说明如上所述)
- 在配置中排除文件报告或在行内注释中报告。对于应忽略的错误,请将其添加到配置中。
- 在配置中降低报告级别
- 生成基线报告,这样你就可以专注于新代码,而不是试图修复旧代码。将基线报告提交到项目仓库。
如果其他方法都失败,可以禁用PHPStan,但除非必要,否则应尽量避免。
断开和重新连接自动化
如果您在使用自动化的git钩子时遇到问题,需要禁用或重新启用它们
# Disable automations, set the git hooks to the default: git config core.hooksPath ".git/hooks" # Re-enable automations, set the git hooks to our custom hooks directory: git config core.hooksPath ".githooks"
操作系统问题
注意:在OSX上,您可能还需要安装coreutils
,因为初始化脚本使用了realpath
命令。如果看到与此相关的错误,请运行以下命令
brew install coreutils
卸载
要删除该包
- 从项目根目录删除任何自定义的代码检查器或格式化程序配置
- 删除
.githooks
目录 - 运行
git config core.hooksPath .git/hooks
- 运行
npm remove @lform/pretty-code
- 运行
composer remove lform/pretty-code
- 从
composer.json
和package.json
中移除pretty
脚本
代码检查器和格式化程序
代码检查器
格式化程序
- PHP CS Fixer
- 配置为PHP 8.3,对于7.4的支持,请将配置文件复制到您的项目中并自定义它。
- Prettier
支持的文件类型
L = 检查,F = 格式化
- antlers.html (F)
- antlers.php (F)
- blade.php (F)
- css (LF)-
- html, htm (LF)
- js (LF)
- jsx (LF)
- json (F)
- pcss (LF)
- php (LF)
- scss (LF)
- ts (LF)
- tsx (LF)
- twig (F)
- yaml, yml (LF)
命令
格式化程序
# Runs Prettier (css, scss, pcss, js, jsx, ts, tsx, json, html, htm, twig, blade.php, yml, yaml) npm run pretty:format <path> # Runs PHP-CS-Fixer (php) composer pretty:format <path>
代码检查器
# Runs StyleLint (css, scss, pcss) npm run pretty:lint:css <path> # Runs ESLint (js, jsx, ts, tsx, json) npm run pretty:lint:js <path> # Runs linthtml (html, htm) npm run pretty:lint:html <path> # Runs PHPStan (php) composer pretty:lint <path>
按项目定制
为了按项目定制代码检查器和格式化程序
- 将需要修改的特定配置文件从Pretty Code包根目录复制到项目根目录。只复制您需要的配置,这些自定义配置将不会通过包管理系统进行更新。
- 根据需要修改复制的配置文件。
- 打开
.lintstagedrc.json
文件,并从正在调整的代码检查器或格式化程序中移除显式配置文件路径或忽略文件路径。 - 对于适用的
package.json
和composer.json
脚本,做同样的事情。 - 基于项目的配置的代码检查器和格式化程序将自动使用项目根目录中的配置文件。
要撤销这些更改,只需删除配置并使用包的package.json
和composer.json
文件恢复原始脚本。
配置文件
.eslintrc.json
.eslintignore(如有适用)
.linthtmlrc.json
.prettierrc.json
.prettierignore
.stylelint.json
.stylelintignore
phpstan.neon
待办事项
- 添加github工作流
- 添加tailwind代码检查器
- 添加antlers格式化程序和代码检查器
- 添加Windows支持(将bin脚本转换为node.js)