gregpriday/copy-tree

将目录及其文件复制到您的剪贴板。

0.5 2024-07-14 12:16 UTC

This package is auto-updated.

Last update: 2024-09-13 09:26:41 UTC


README

Latest Version on Packagist Tests Total Downloads

这个命令行工具允许您将目录的整个结构(包括文件内容)复制到您的剪贴板。这对于快速以可读格式(如代码审查或协作调试会话期间)共享文件内容和结构非常有用。

功能

  • 将目录结构和文件内容复制到剪贴板,可直接粘贴到聊天机器人,如 ClaudeChatGPT
  • 灵活的规则集系统,用于包含/排除文件。
  • 支持针对项目不同部分的多个规则集。
  • 支持自定义、预定义和自动检测的规则集。
  • 输出到剪贴板、控制台或文件。
  • 跨平台支持(Linux、macOS、Windows)。

快速开始

安装后,您可以将当前目录结构快速复制到剪贴板

ctree

您可以使用以下命令获取命令帮助

ctree --help

如果您在Laravel或SvelteKit项目中,自动规则将自动工作。否则,您需要指定自定义规则集。

文档

有关使用Ctree的更多详细信息,请参阅以下文档

有关规则集系统的快速概述,请参阅下面的规则集系统部分。

先决条件

在安装和使用 copy-tree 之前,请确保您的系统已安装必要的剪贴板工具

  • Linux:安装 xclip,该工具用于访问剪贴板。
    sudo apt-get update && sudo apt-get install -y xclip
  • macOS:macOS 预装了 pbcopy,因此无需额外安装。
  • Windows:Windows 默认提供了 clip 命令,因此无需额外安装。

安装

您可以通过 Composer 安装此包

composer require gregpriday/copy-tree

用法

安装后,您可以直接从终端运行 ctree 命令。以下是使用此命令的方法

# Display the help information
ctree --help

# Copy current directory to clipboard
ctree

# Specify a directory path
ctree /path/to/directory

# Display the output in the console
ctree --display

# Output to a file instead of clipboard
ctree --output=output.txt

# Use a specific ruleset
ctree --ruleset=laravel

# Include only the directory tree in the output, not the file contents
ctree --only-tree

# Filter files using a glob pattern on the relative path
ctree --filter="*.php"

命令参数和选项

  • path:可选的目录路径以复制。如果未指定,则使用当前工作目录。
  • --depth-d:可选的树的最大深度。默认为 10。
  • --output-o:将输出到文件而不是剪贴板。
  • --display-i:在控制台显示输出。
  • --ruleset-r:要应用的规则集。可用选项包括 'auto'、'laravel'、'sveltekit' 和任何自定义规则集。默认为 'auto'。
  • --only-tree-t:仅包含输出中的目录树,不包括文件内容。
  • --filter-f:使用glob模式在相对路径上过滤文件。

全局安装和使用

使用Composer全局安装copy-tree,以便在任何终端位置使用ctree命令

composer global require gregpriday/copy-tree

运行相同的命令以升级到最新版本。

确保Composer全局bin目录包含在您的PATH中。通常,对于Unix系统,这是~/.composer/vendor/bin~/.config/composer/vendor/bin。将其添加到您的.bashrc.zshrc

export PATH="$PATH:$HOME/.composer/vendor/bin"

重新加载您的配置

source ~/.bashrc
# Or, if using zsh
source ~/.zshrc

现在,您可以从任何目录使用ctree

# Copy the current directory to the clipboard
ctree

# Copy with specific depth and display output
ctree /path/to/directory --depth=2 --display

规则集系统

Ctree使用灵活的规则集系统来确定包含或排除哪些文件和目录。规则集系统按以下顺序工作

  1. 当前目录中的自定义规则集
  2. 预定义规则集
  3. 自动检测
  4. 默认规则集

有关示例,请参阅Laravel规则集

有关编写规则集的完整指南,请参阅编写规则集文档。

有关各种项目类型规则集的示例,请参阅我们的规则集示例

规则集格式

规则集以JSON格式定义。以下是结构的概述

{
    "rules": [
        [
            ["field", "operator", "value"],
            ["field", "operator", "value"]
        ]
    ],
    "globalExcludeRules": [
        ["field", "operator", "value"]
    ],
    "always": {
        "include": ["file1", "file2"],
        "exclude": ["file3", "file4"]
    }
}
  • rules:规则集数组。每个规则集都是一个规则数组,所有规则都必须为true才能包含文件。
  • globalExcludeRules:一个规则数组,如果其中任何规则为true,则将排除文件。
  • always:指定始终包含或排除的文件,不受其他规则的影响。

字段

可用的字段包括

  • folderpathdirnamebasenameextensionfilenamecontentscontents_slicesizemtimemimeType

运算符

可用的运算符包括

  • >>=<<==!=oneOfregexglobfnmatchcontainsstartsWithendsWithlengthisAsciiisJsonisUlidisUrlisUuid

有关规则集架构的完整参考,请参阅项目存储库中的schema.json文件

所有运算符都可以通过在其前面加'not'来取反,例如notOneOfnotRegexnotStartsWith。这允许创建更灵活的排除规则。

自定义规则集

您可以在项目目录中创建一个名为/.ctree/ruleset.json的自定义规则集文件。如果此文件存在,则将使用它而不是任何预定义或默认规则集。

您还可以在/.ctree/example.json中创建命名规则集,它将用于ctree -r example

多个规则集

Ctree支持在单个项目中使用多个规则集,允许您选择性地共享代码库的不同部分。这对于具有不同部分或模块的大型项目特别有用。

要使用多个规则集

  1. 在项目的/.ctree目录中为每个规则集创建单独的JSON文件。
  2. 根据所需的规则集名称命名每个文件(例如,/.ctree/frontend.json/.ctree/backend.json)。
  3. 使用--ruleset-r选项指定要应用的规则集
ctree --ruleset frontend
ctree --ruleset backend

此功能使您能够轻松地共享项目的特定部分,例如仅前端代码或仅后端代码,而无需每次都修改规则集。

有关使用多个规则集的更详细信息,请参阅使用多个规则集文档。

预定义规则集

Ctree为常见项目类型提供了预定义规则集。使用方法如下

ctree --ruleset laravel   # Uses the predefined Laravel ruleset
ctree --ruleset sveltekit # Uses the predefined SvelteKit ruleset

自动检测

如果没有指定规则集,Ctree 将尝试自动检测项目类型并使用适当的规则集

ctree  # Auto-detects project type and uses the most suitable ruleset

默认规则集

如果找不到自定义规则集,未指定预定义规则集,并且自动检测失败,Ctree 将使用默认规则集。

故障排除

如果您遇到剪贴板功能问题

  • Linux:确保已安装并运行 xclip
  • macOS:如果您遇到权限错误,请尝试用 sudo 运行命令。
  • Windows:如果您遇到权限问题,请确保以管理员身份运行命令提示符。

如果输出被截断,请尝试使用 --output 选项将输出保存到文件,而不是复制到剪贴板。

贡献

欢迎贡献!以下是您可以如何贡献的方法

  1. Fork 仓库
  2. 创建一个新的分支(git checkout -b feature/amazing-feature
  3. 进行更改
  4. 提交更改(git commit -m '添加一些惊人的功能'
  5. 推送到分支(git push origin feature/amazing-feature
  6. 打开 Pull Request

请确保根据需要更新测试。有关更多详细信息,请参阅CONTRIBUTING 文件。

测试

使用以下命令运行测试

composer test

变更日志

有关最近更改的详细信息,请参阅CHANGELOG

安全性

如果您发现任何安全相关的问题,请通过电子邮件greg@siteorigin.com 报告,而不是使用问题跟踪器。

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅许可证文件