paysera / util-phpstorm-helper
设置共享 PhpStorm 配置的助手
1.0.8
2020-08-28 21:16 UTC
Requires
- php: >=7.2
- ext-dom: *
- ext-json: *
- ext-libxml: *
- alchemy/zippy: ^0.4.9
- guzzlehttp/guzzle: ^6.3
- oohology/gitignorewriter: ^1.1
- padraic/phar-updater: ^1.0
- symfony/console: ^3.4|^4.0
- symfony/filesystem: ^3.4|^4.0
- symfony/finder: ^3.4|^4.0
Requires (Dev)
- ext-zip: *
- bamarni/composer-bin-plugin: ^1.4
- mockery/mockery: ^1.3.2
- paysera/lib-php-cs-fixer-config: ^2.2.2
- phpunit/phpunit: ^6.5
Suggests
- ext-zip: To download and install extensions from zip files
README
设置 PhpStorm 与共享配置的脚本。
为什么?
我们每个人都喜欢自定义我们的开发者体验——快捷键、布局以及其他极其重要的东西,比如配色方案。但是,某些配置通常最好与其他团队成员共享。
- 自定义代码风格、检查、生成代码模板;
- 按项目结构配置的目录;
- 正确的 SQL 方言;
- 项目启用的某些插件;
- PHP 解释器作为 docker,使用正确的镜像;
- 与任何质量控制工具集成;
- 可运行的外部工具;
- 允许调试服务器的配置;
- 要安装的一些常用插件。
这可以让您的团队更加一致,避免为每个成员单独配置一切。
PhpStorm 中有 设置仓库
功能,但它不同步大多数此类东西,并且它同步一些本应私有的东西(如配色方案)。
此外,还应该在三个不同的地方更改此配置
- 在
.idea
文件夹中 - 可版本化的文件。这个库有助于简化初始配置; - 在
.idea
文件夹中,但在一个不应版本化的文件中。这需要在每台机器上运行脚本来修改该文件; - 在全局 PhpStorm 配置文件中 - 安装的插件和外接工具。这些对所有项目都是共享的。
安装
从 发布页面 下载最新版本的 phpstorm-helper.phar
。
自动
curl -sLo phpstorm-helper https://github.com/paysera/util-phpstorm-helper/releases/download/1.0.0/phpstorm-helper.phar
chmod +x phpstorm-helper
./phpstorm-helper self-update
sudo mv phpstorm-helper /usr/local/bin/phpstorm-helper
您还需要 zip 库来下载和解压插件。在 Ubuntu 上安装
sudo apt-get install php-zip
用法
TL;DR;
一次(最好在 PhpStorm 关闭时运行)
phpstorm-helper configure-installation
对于每个项目
- 关闭项目
phpstorm-helper configure
- 重新打开项目
或者,有更多选项
phpstorm-helper configure --docker-image php-cli:7.4 --webpack-config-path config/webpack.js --server project-url-address.docker:80@/project-path-inside/container
对于相同项目的后续运行可以跳过选项,除非您想更改其中之一。
命令
如您已注意到的,有两种不同的用例
- 在
.idea
中设置(可能)可版本化的配置文件,并修改workspace.xml
(不能版本化)。库提供了 Paysera 制作的存储库的默认设置——请随意使用这些或使用您自己的自定义; - 配置外部工具和安装常用插件,这是在 PhpStorm 安装文件夹中完成的。
设置可版本化配置文件
phpstorm-helper configure [project-root-dir] [path-to-configuration-template-structure]
默认配置的功能
- 自定义代码风格和生成代码模板与 Paysera 风格指南 兼容;
- 自定义检查 - 一些已禁用,一些可选的已启用;
- MariaDB SQL 方言;
- 为项目启用的 Symfony 插件;
- Symfony 生成服务名称遵循约定;
- 目录已正确标记
- vendor 目录未添加为 Git 根目录 - 在项目更新后不会调用 git update 为库;
- 生成文件被标记为排除 - 您不会看到重复的查找结果;
- 供应商的配置 - 供应商被排除,但包含在内。这使得以下配置的 Scopes
项目文件
(或项目内
)- 供应商不被包括;项目和库
- 供应商被包括。在搜索时选择范围 → 项目和库
;
- PHP 解释器作为 docker,使用正确的镜像。这允许在正确环境中使用 PhpStorm 集成运行单元测试;
php-cs-fixer
集成 - 如果出现问题,它将被标记为弱警告。
某些功能需要额外的选项或当前目录中已存在的文件(如 .php_cs
)。使用 --help
获取更多信息。
配置外部工具和安装插件
phpstorm-helper configure-installation [path-to-config-file]
path-to-config-file
是指向 php
配置文件的路径,其结构如下
<?php declare(strict_types=1); use Paysera\PhpStormHelper\Entity\ExternalToolConfiguration; use Paysera\PhpStormHelper\Entity\GlobalConfiguration; return (new GlobalConfiguration()) ->setExternalToolConfigurations([ (new ExternalToolConfiguration()) ->setName('Fix CS (debug)') ->setCommand('bin/php-cs-fixer') ->setParameters('fix --diff --verbose --config=$ProjectFileDir$/.php_cs --dry-run "$FilePath$"') ->setSynchronizationRequired(false) ->setConsoleShownAlways(true), ]) // copy direct links from plugin pages, for example https://plugins.jetbrains.com/plugin/7219-symfony-plugin // versions will get old, but prompt will appear to update the plugin // if plugin by that name already exists, no action will be taken ->setPlugins([ 'https://plugins.jetbrains.com/files/7219/59728/Symfony_Plugin-0.17.171.zip', ]) ;
或者,您可以扩展建议的配置
<?php
declare(strict_types=1);
use Paysera\PhpStormHelper\Entity\SuggestedGlobalConfiguration;
use Paysera\PhpStormHelper\Entity\ExternalToolConfiguration;
return (new SuggestedGlobalConfiguration())
->addExternalToolConfigurations([
(new ExternalToolConfiguration())
->setName('PHP server')
->setCommand('php')
->setParameters('-S 0.0.0.0:8080'),
])
->addPlugins([
'https://example.com/my-custom-plugin.jar',
])
;
如果您没有提供配置路径,将使用我们建议的全局配置。
语义化版本控制
该库遵循 语义化版本控制。
有关 API 中可以更改和不可以更改的基本信息,请参阅 Symfony BC 规则。请注意,在此包中,默认情况下一切都是 @internal
- 只直接使用标记有 @api
的类和方法。
任何其他文件,包括项目的默认配置,也可以在任何版本中更改。
默认的 PhpStorm 配置、工具或插件也可以在任意版本号中更改。
运行测试
composer update
composer test
贡献
请随意创建问题和提供 pull 请求。
您可以使用以下命令修复任何代码风格问题
composer fix-cs