brianhenryie / composer-phpstorm
Composer 脚本用于从 PhpStorm 代码导航中排除文件夹。
Requires
- composer-plugin-api: ^2.0
- symfony/filesystem: *
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-18 19:46:16 UTC
README
Composer-PhpStorm
自动为 PHPUnit 创建 PhpStorm 运行配置,将文件夹标记为排除,并配置 WordPress 集成。
已测试从 PhpStorm 2019.3 到 2024.1.2
概述
- ExcludeFolders 标记指定的文件夹、符号链接文件夹和由 Mozart 管理的包,通过将条目添加到项目的
.iml
配置文件中,使其从 PhpStorm 代码导航和完成中排除。 - PHPUnitRunConfigurations 为项目中的每个找到的
phpunit.xml
创建一个 运行配置(忽略/vendor
和/wp-content
),通过将条目添加到workspace.xml
中实现。 - WordPress 搜索 WordPress 安装并启用 WordPress 支持。
安装
composer config allow-plugins.brianhenryie/composer-phpstorm true
composer require --dev brianhenryie/composer-phpstorm
可选
"extra": {
"phpstorm": {
"exclude_folders": {
"folders": [
"path/to/folder_one/from/project/base",
"path/to/folder_two/from/project/base"
],
"include_folders": [
"path/to/folder_one/from/project/base",
],
"composer-symlinks": false
}
}
}
操作
ExcludeFolders
可以在 extras/phpstorm/exclude_folders/folders
下指定要排除的文件夹。这些假定是从项目根目录相对的。
PhpStorm 会自动将 vendor 目录内的项目文件夹添加到其排除文件夹列表中,因此将它们添加到 folders
列表并不能达到预期效果。相反,应该将 vendor/vendor-name/project/src
文件夹添加到 exculde_folders/folders
列表,并且出人意料的是,应该将 vendor/vendor-name/project/src
添加到 exculde_folders/include_folders
列表。
用于前缀包命名空间的 Composer 工具 coenjacobs/mozart 导致每个类都被复制,因此每个 classname::function 在 PhpStorm 的代码完成中都有多个实现。此工具读取 Mozart Composer 配置,并排除由 Mozart 管理的包的源文件夹。
如果符号链接的文件源在项目目录中,则由 kporras07/composer-symlinks 创建的符号链接会被排除。可以通过在您的 composer.json
中将 extras/phpstorm/exclude_folders/folders
设置为 false
来禁用此功能。如果符号链接的文件源在项目的根目录中,则不会被排除。
在 /.idea/project-name.iml
的 <component name="NewModuleRootManager"> <content url="file://$MODULE_DIR$">
中添加
<excludeFolder url="file://$MODULE_DIR$/foldertoexclude"/>
PHPUnitRunConfigurations
该脚本搜索项目目录中的 phpunit.xml
并为每个找到的创建一个 PhpStorm 运行配置(忽略 /vendor/
下的),当在项目根文件夹中找到时使用名称 phpunit
,否则使用文件夹名称。
在 /.idea/workspace.xml
的 <component name="RunManager">
中添加
<configuration name="tests" type="PHPUnitRunConfigurationType" factoryName="PHPUnit">
<TestRunner configuration_file="$PROJECT_DIR$/tests/phpunit.xml" scope="XML" use_alternative_configuration_file="true"/>
<method v="2"/>
</configuration>
为什么?
WordPress。我编写了许多小插件 [1],这将为我不太关心的一些按钮点击。
待办事项
- 可以搜索符号链接,然后检查它们是否指向项目目录内部,而不是从 composer.json 中读取。
- 设置默认解释器(PHP 语言级别/CLI 解释器)
- 配置以允许排除自动发现的
phpunit.xml
- 应找到由 Mozart 处理的子包
- 设置 PHP 语言级别
- 设置 PHPCS,CBF,
WordPress 路径 - 允许禁用 Mozart 集成
- 自动处理排除列表中的
vendor-name/project
文件夹,但包括该文件夹并排除其src
文件夹。 - 应是一个脚本,并根据配置条件运行部分。
- 考虑 geecu/phpstorm-configurator
参见
致谢
我正在等待MacOS Catalina下载和安装。我从阅读kporras07/composer-symlinks中学习了如何编写Composer扩展。