link000/finder

简单的文件内容搜索工具

dev-master 2024-02-02 15:17 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:33:20 UTC


README

默认情况下,它使用 ripgrep (https://github.com/BurntSushi/ripgrep) 搜索与您条件匹配的文件。

您可以创建自己的搜索驱动程序

待办事项

为了尽快在前端获取结果,我建议使用 websockets

例如,您可以使用 soketi (https://github.com/soketi/soketi) 或服务器端的第三方服务,如 pusher,以及前端上的 Laravel echo (https://github.com/laravel/echo)

当找到匹配项时,会触发 Link000\Finder\Events\SearchResultFoundEvent 事件

您可以实现自己的监听器并自行处理事件

在这种情况下,我建议通过将配置文件中的 broadcasting.method 设置为空值来关闭由包提供的广播功能

待办事项:依赖

  • find
  • ripgrep

配置

1. 使用配置文件

运行以下命令发布 finder 配置:

php artisan vendor:publish --provider="Link000\Finder\FinderServiceProvider" --tag="config"

并在 config/finder.php 文件中调整设置

2. 运行时配置

获取配置值

config('finder.search_base_path')

设置配置值

config('finder.search_base_path', '/my/custom/path')

配置

仅应用于在默认 routes/finder.php 文件中发布的路由上的选项

广播选项

其他选项

待办事项

broadcast_method broadcasting.broadcast_name broadcasting.channel_type (public/private, 如果用户未认证,将回退到公共频道) broadcasting.channel_name

添加自定义搜索驱动程序

您可以通过实现 Link000\Finder\Interfaces\FinderInterface 来添加自定义搜索驱动程序

  • 创建您的自定义驱动程序并实现 Link000\Finder\Interfaces\FinderInterface
  • 将您的驱动程序(包括完整命名空间)添加到 finder.drivers 配置中
// ... other configs
'drivers' => [
	'my_custom_driver' => App\Drivers\MyCustomSearchDriver::class,
],
  • 激活您的驱动程序
    • 通过更改 ENV 变量
     FINDER_DRIVER='my_custom_driver'
    • 通过更改 finder.driver 配置
     // ... other configs
     'driver' => 'my_custom_driver',
    • 或设置运行时驱动程序
     use Link000\Finder\Interfaces\FinderInterface
    
     class YourController {
     	protected FinderInterface $finderService;
    
     	public function __construct(FinderInterface $finderService) {
     		$this->finderService = $finderService;
     	}
    
     	public function search() {
     		// use your driver dynamically
     		$this->finderService->setDriver(app(MyCustomSearchDriver::class));
     	}
     }

安装预定义的堆栈

这将安装带有路由、控制器、服务、样式等的预定义堆栈

建议 您有一个 干净的 git 工作树,这样您可以看到新创建的文件

您应该根据您当前的应用程序进行自定义或删除不必要的组件

可用堆栈

  • vue (vue + inertia, tailwind)
  • blade (blade, tailwind)
  • api (仅路由)
php artisan finder:install

关于包开发的说明

在包开发过程中将包添加到项目中

将其添加到您的应用 composer.json 中

"repositories": [
	{
		"type": "path",
		"url": "/packages/*",
		"options": {
			"symlink": true
		}
	}
]

这将指示 composer 在 /packages 中查找包并创建一个指向已安装包的符号链接

symlink:false 将将包复制到 vendor 目录中,而不是创建符号链接(默认行为)

更新 composer

composer update