gedachtegoed/workspace

围绕 tighten/duster 的有偏见的包装,默认配置,Larastan & Prettier blade 格式化集成以及 CI 工作流程。仅限内部使用。

v0.3 2024-04-12 13:38 UTC

README

为 Laravel 提供可扩展的工作空间配置器,轻松同步所有团队和项目中的 linters、修复器、静态分析、CI 工作流程、编辑器集成等

codestyle tests coverage coverage

在您的项目中安装 Workspace

composer require gedachtegoed/workspace --dev

然后运行安装命令以在您的项目中设置 Workspace 的配置

php artisan workspace:install

使用方法

Workspace 将为您的项目添加几个 artisan 命令,以帮助同步集成与上游更改

# Install configured Integrations
php artisan workspace:install

# Updates workspace & Integration dependencies + rebuilds configs
php artisan workspace:update

# Integrates configured Integrations with your editor
php artisan workspace:integrate

Workspace 默认提供有偏见的集成。这些集成易于更改和扩展,但建议与该包一起使用的方法是发布自己的 便携式 Workspace。这样您可以完全控制任何上游配置更改以及非常定制的设置。

以下 composer 脚本别名将默认安装到您的项目中

# Linting and fixing
composer lint
composer fix

# Static analysis
composer analyze
composer baseline

请注意,您可以通过在命令后添加 -- 将选项和标志转发到底层 composer 脚本。您可以从 tighten/dusterlintfix 命令传递任何选项,或从 phpstan/phpstananalyzebaseline 命令传递任何选项。

例如,如果您只想修复脏文件,可以使用

composer lint -- --dirty

注意:如果您不希望 Workspace 为您安装 composer 脚本,请删除或编辑包配置中的 Aliases::class

与您的编辑器集成

到目前为止,我们已经有了 composer 脚本和 CI 工作流程来运行所有的 linting、fixing 和静态分析。

让我们弥合差距,确保您的 IDE 无缝地应用所有相同的规则。

php artisan workspace:integrate

您将被提示集成到 vscodeintellij(如 phpstorm)。

所有默认集成都包含发布 workspace 插件和扩展以及 workspace 特定配置。这样我们可以确保团队中的每个人都拥有相同的 IDE 集成作为基础,这可以通过全局配置进行微调。

保持规则更新

Linter、fixer 和静态分析规则可能会随时间而变化。幸运的是,在本地更新这些规则非常简单。只需运行

php artisan workspace:update

注意:在开始内部更新之前,Workspace 会检查您的当前工作目录是否干净(没有未提交的文件)。这样,您可以更容易地审查已发布的文件的上游更改。

覆盖默认集成

Workspace 随附以下默认集成

 return [
    EditorDefaults::class,
    PHPCodeSniffer::class,
    PrettierBlade::class,
    PHPCSFixer::class,
    IDEHelper::class,
    Workflows::class,
    Larastan::class,
    Aliases::class,
    TLint::class,
    Pint::class,
];

这些可以通过发布 Workspace 的配置文件来禁用

php artisan vendor:publish --tag=workspace-config

您可以选择禁用您不喜欢或用您自己的实现扩展任何集成。 在此处 查看默认集成是如何实现的,以了解上下文。

您可以在配置中添加自己的集成类名,或者您可以直接添加集成构建器

请查看下面的片段,了解使用两种风格的用法示例。

use Gedachtegoed\Workspace\Integrations\EditorDefaults\EditorDefaults;
use Gedachtegoed\Workspace\Core\Builder;

use App\Workspace\MyCustomPrettierIntegration;

return [
    // Ships with Workspace. Can be combined with custom Integrations
    EditorDefaults::class,

    // FQCN to your custom Integration
    MyCustomPrettierIntegration::class,

    // Inlined Integration using the Builder directly
    Builder::make()
        // Register composer dependencies
        ->composerRequireDev('laravel/telescope:^4')
        ->composerUpdate('laravel/telescope')

        // Hook into afterInstall to configure Telescope
        ->afterInstall(function (Command $command) {
            $command->call('telescope:install');
            $command->call('artisan migrate');

            // NOTE: You can use Laravel Prompts in here to make anything interactive
        })

];

我们正在制作一个全面的Builder API参考指南和指南,用于创建自己的集成。请稍后查看。

便携式工作空间

工作空间配备了有见地的默认集成设置。我们理解您的组织或团队有非常具体的需求。这就是为什么您可以轻松地将自己的配置作为包分发。

我们提供一款美观流畅的集成构建器API,可自动化所有类型的任务,例如:

  • 安装和更新composer & npm依赖项
  • 安装和合并composer脚本别名
  • 使用Duster集成自定义linters & fixers
  • 发布集成配置文件
  • 发布CI工作流程文件
  • 从您的gitignore文件中添加和删除行
  • 提供vscode & phpstorm的插件/扩展
  • 提供vscode & phpstorm的工作空间配置

此外,工作空间集成可以通过可调用的钩子完全扩展。因此,您可以执行安装、更新和集成命令,几乎可以完成您想要的任何事情。

关于使用您的便携式工作空间的文档正在等待!请保持关注!

路线图

路线图文档的链接