暗影狗 🐾
阴影狗 用于生成您项目中文件的衍生进程 。 无论是需要生成静态资产,预编译资源,还是任何其它变换,"影子狗"凭借其超充电功能设定使其变得容易而强大.
特征
- 弹性输入检测 : 自动检测仅更新的文件和进程的变化.
- 配置管: 使用直观的 JSON 配置文件定义手工艺品生成工作流程 .
- 插件支持 : 以自定义或社区所建插件扩展功能 .
- 闪亮快能 : 优化速度,即使有大型的储存库.
- 监视模式 : 当源文件改变时自动再生出文物.
安装
通过 npm 安装阴影狗 :
npm install shadowdog --save-dev
开始 QQ
阴影狗使用配置文件( S)shadowdog.json)定义出产文物的工作流程. 以下是一个例子:
{
"$schema": "https://raw.githubusercontent.com/factorialco/shadowdog/refs/heads/main/schema.json",
"plugins": [],
"watchers": [
{
"files": ["example.txt"],
"commands": [
{
"artifacts": [
{
"output": "example.output.txt"
}
],
"command": "cp example.txt example.output.txt"
}
]
}
]
}
关键字段
$schema:为配置提供计划验证.plugins:用于扩展Shadowdog功能的插件名阵列.watchers: 定义触发文物生成命令的文件监视器.files:要监视的文件路径或 glob 模式的阵列.commands: 检测到变化时执行的命令.artifacts:指定命令生成的输出文件.command:要运行的 shell 命令.
CLI 命令
Shadowdog提供多种命令来简化工作流程:
- 生成文物数字 :
npx shadowdog - 监视模式 (包括用于外部工具集成的MCP服务器):
npx shadowdog --watch
可用插件QQ
使用这些强大的插件增强阴影狗:
-
shadowdog-local-cache实施局部缓存机制,加快重复出产文物.环境变量:
SHADOWDOG_DISABLE_LOCAL_CACHE: 当true,完全禁用本地缓存SHADOWDOG_LOCAL_CACHE_READ: 设定时, 超过插件的读取缓存配置(true编号 :false(中文(简体) )SHADOWDOG_LOCAL_CACHE_WRITE: 设定时, 覆盖插件的写入缓存配置( W)true编号 :false(中文(简体) )SHADOWDOG_LOCAL_CACHE_PATH: 设定时, 覆盖插件的缓存目录路径
-
shadowdog-remote-aws-s3-cache为分布式工作流程启用 AWS S3 远程缓存 .环境变量:
SHADOWDOG_DISABLE_REMOTE_CACHE: 当true,完全禁用远程缓存SHADOWDOG_REMOTE_CACHE_READ: 设定时, 超过插件的读取缓存配置(true编号 :false(中文(简体) )SHADOWDOG_REMOTE_CACHE_WRITE: 设定时, 覆盖插件的写入缓存配置( W)true编号 :false(中文(简体) )SHADOWDOG_REMOTE_CACHE_EXTRA: 设定时, 在 S3 中的缓存密钥中添加额外信息AWS_PROFILE: 用于认证的 AWS 配置文件( 可选)AWS_ACCESS_KEY_ID: AWS 访问密钥 ID(如果未设置 AWS PROFILE 则需要)AWS_SECRET_ACCESS_KEY: AWS 秘密访问密钥(如果AWS PROFILE没有设置则需要)AWS_REGION: AWS 区域(如果 AWS PROFILE 未设置则需要)
-
shadowdog-tag添加标记能力以过滤特定命令.环境变量:
SHADOWDOG_TAG: 设定时, 只运行带有匹配标记的命令
-
shadowdog-lock生成 ashadowdog-lock.json用于跟踪可复制建筑的文物元数据和依赖性的文件.锁文件包括:
- 用于生成的阴影犬版本
- 环境一致性节点.js版本
- 艺术缓存标识符和文件清单
- 以通配符扩展查看的文件
- 用于无效的环境变量值
- 每件文物的命令细节
特征 :
- 决定性输出: 所有阵列都被排序为一致的锁定文件
- 部分更新: 在监视模式下只更新已更改的文物
- 种族状况安全: 处理同时执行的任务
- 通关卡支持: 扩展文件模式, 如
src/*.ts自动 - 相对路径: 所有文件路径相对于工程根
-
shadowdog-gitHandles git 重置和合并 平稳地拖住监视器,并在重置完成后恢复.内部配置 :
- 检查每2000ms( INTERVAL TIME)
- 用途
.git/rebase-merge以检测再基准状态
-
shadowdog-socket提供与"阴影狗"互动的外部通信通道.无可配置的环境变量 。 使用套接字事件 :
CHANGED_FILE: 文件更改时发送ERROR: 错误时发送INITIALIZED: 启动时发送CLEAR: 清除后发送
-
shadowdog-tree在命令之间生成一个依赖树结构来运行相互依赖的不同命令.无可配置的环境变量 。 使用内部依赖图算法.
-
shadowdog-rake优化多个bundle exec rake命令为单一命令.无可配置的环境变量 。 自动检测和组合雷克任务.
-
shadowdog-mcp为外部工具(如Cursor AI)提供模式上下文协议(MCP)服务器,与Shadowdog程序互动.环境变量:
SHADOWDOG_MCP_PORT: MCP 服务器的 HTTP 端口( 默认 ):8473(中文(简体) )SHADOWDOG_MCP_HOST: MCP 服务器的 HTTP 主机( 默认 :localhost(中文(简体) )
可用的 MCP 工具 :
pause-shadowdog:在监视模式中暂停阴影狗,以防止在代码更改时生成文物(与守护进程适当结合)resume-shadowdog: 暂停后恢复阴影狗( 与守护进程适当整合)get-artifacts: 获取所有文物的信息, 包括状态、 上次更新时间及相关文件compute-artifact: 使用与守护进程相同的任务运行器和中间软件生成特定文物get-shadowdog-status: 获取阴影狗的现状, 包括守护进程可用性和配置摘要
连接: HTTP 结束点
http://localhost:8473/mcp(可通过环境变量配置)光标集成数字 : 要与光标连接,请将此添加到您的 MCP 配置中 :
{ "mcpServers": { "shadowdog": { "url": "http://localhost:8473/mcp" } } }详细的Cursor MCP设置指令见: Cursor MCP 安装指南
使用插件
要使用插件,请添加到 plugins 区域 shadowdog.json 配置文件 。 例如:
更新您的配置 :
{
...
"plugins": [
{
"name": "shadowdog-local-cache",
},
{
"name" : "shadowdog-tree"
}
]
...
}
考虑到插件的顺序很重要. 插件将按照配置文件中定义的顺序执行.
MCP 整合
Shadowdog包括一个内置的模型上下文协议(MCP)服务器,允许Cursor等AI工具在程序上与你的构建系统交互. MCP服务器在您在监视模式下运行"阴影狗"时自动启动.
快速设置
-
在您的配置中添加 MCP 插件 :
{ "plugins": [ { "name": "shadowdog-mcp" } ] } -
以监视模式开始 (MCP服务器自动启动):
npx shadowdog --watch -
配置光标 : 将此添加到您的光标 MCP 配置 :
{ "mcpServers": { "shadowdog": { "url": "http://localhost:8473/mcp" } } }
可用的 MCP 工具
一旦连接, 您可以在 Cursor 中使用这些工具 :
pause-shadowdog- 代码更改期间暂停文物生成(与守护进程适当结合)resume-shadowdog- 改变后恢复生产文物(与守护进程适当结合)get-artifacts- 查询文物状况和信息compute-artifact- 利用与守护进程相同的任务执行器,按需生成特定文物get-shadowdog-status- 检查"阴影狗"当前状态和守护进程可用性
高级配置
- 自定义端口设置
SHADOWDOG_MCP_PORT=9000以使用不同的端口 - 自定义主机设置
SHADOWDOG_MCP_HOST=0.0.0.0允许外部连接
详细的Cursor MCP设置指令见: Cursor MCP 安装指南
如何缓冲工作
暗道克使用精密的掘出系统来确定何时需要再生出文物. 了解如何计算缓存密钥对于优化工作流程至关重要.
快取密钥计算
缓存标识符使用 computeCache 函数,生成基于下列因素的决定性散列:
- 文件内容:所有被观看的文件都读取,其内容包含在散列中
- 文件路径: 绝对文件路径用于环境之间的一致性
- 环境变量: 只包含指定的环境变量
- 命令: 准确的命令字符串被散列
- 阴影狗版本: 确保当Shadowdog更新时缓存无效
关键特性
- 决定性: 相同的输入总是产生相同的缓存密钥
- 排序的文件: 文件路径按字母顺序排序,以便保持一致
- 扩展通配符: Glob 模式像
src/*.ts在散心前扩展 - 环境意识: 只有指定的环境变量影响缓存
- 版本敏感: 当 Shadowdog 版本更改时缓存无效
最佳做法
- 使用特定文件模式: 避免可能包含不想要的文件的过于宽泛的拼贴图案
- 环境变量: 只包含实际影响您构建进程的变量
- 文件组织: 为更好的缓存效率, 将相关文件保存在一起
- 版本披针: 使用CI/CD中特定的"阴影狗"版本来再生构建
许可证 QQ
阴影狗是开源的,可以在 MIT 许可证。 。 。 .
反馈和支持 QQ
如果你遇到任何问题,有问题,或想建议特征,请打开一个问题或加入讨论.
享受艺术品的生成, 超充电!