首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

watchman cli用于查看包含排除和包含列表的多个文件夹的选项,触发脚本并查看脚本的stdout/stderr

Watchman 是一个用于监视文件系统变化的工具,它可以帮助开发者跟踪文件的变化并在变化发生时执行相应的操作。以下是关于 Watchman CLI 的一些基础概念以及相关的使用选项:

基础概念

  1. 监视(Watching):Watchman 持续监视指定的文件或目录,以便在文件发生变化时得到通知。
  2. 触发脚本(Trigger Scripts):当监视的文件发生变化时,Watchman 可以执行预先定义的脚本。
  3. 包含列表(Include List):指定需要监视的文件或目录。
  4. 排除列表(Exclude List):指定不需要监视的文件或目录。

使用选项

  • -w--watch:指定要监视的目录。
  • -t--trigger:定义触发脚本及其参数。
  • --include:指定包含列表。
  • --exclude:指定排除列表。
  • -o--output:指定输出格式,可以是 stdout 或 stderr。

示例

假设我们有一个项目目录 my_project,我们想要监视这个目录下的所有 .js 文件,但排除 node_modules 目录,并且在文件变化时执行一个简单的脚本 my_script.sh

代码语言:txt
复制
watchman watch my_project
watchman -- trigger my_project '*.js' --include 'my_project/**/*.js' --exclude 'my_project/node_modules/**' my_script.sh

在这个例子中,my_script.sh 可能是这样的:

代码语言:txt
复制
#!/bin/bash
echo "File changed: $1"

这个脚本会在任何 .js 文件变化时被触发,并打印出变化的文件路径。

查看脚本的 stdout/stderr

要查看触发脚本的输出,可以直接在命令行中运行 Watchman 命令,并观察终端的输出。如果需要将输出重定向到文件,可以使用重定向操作符:

代码语言:txt
复制
watchman -- trigger my_project '*.js' --include 'my_project/**/*.js' --exclude 'my_project/node_modules/**' my_script.sh > output.log 2>&1

这将把标准输出和标准错误都重定向到 output.log 文件。

可能遇到的问题及解决方法

问题: 触发脚本没有执行。

原因: 可能是因为文件变化没有正确地被 Watchman 捕获,或者脚本的路径不正确。

解决方法:

  • 确保 Watchman 正确监视了指定的目录。
  • 检查脚本的路径是否正确,并确保脚本具有执行权限。
  • 使用 -v--verbose 选项增加 Watchman 的输出详细程度,以便调试。
代码语言:txt
复制
watchman --verbose --trigger my_project '*.js' --include 'my_project/**/*.js' --exclude 'my_project/node_modules/**' my_script.sh

通过这些步骤,你应该能够有效地使用 Watchman CLI 来监视文件变化并执行相应的脚本。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券