是否可以在 .watchmanconfig 中配置 watchman 触发器?

Is it possible to configure watchman triggers in .watchmanconfig?

Facebook watchman 文档描述了如何通过将 json 传递到命令中来配置触发器,如下所示:

watchman --json-command < ./tasks/cmds/watchman-build-trigger.json 其中 watchman-build-trigger.json 包含以下内容:

[
    "trigger", 
    "/Users/michaelprescott/Projects/neuro", 
    {
        "name": "build",
        "expression": [
            "anyof",
            [
                "match",
                "src/*.js",
                "wholename"
            ],
            [
                "match",
                "src/*.ts",
                "wholename"
            ],
            [
                "match",
                "src/*.html",
                "wholename"
            ]
        ],
        "command": [
            "./tasks/cmds/build.sh"
        ]
    }
]

但是,我正在尝试了解如何使用 .watchmanconfig 设置手表和一组触发器 watchman watch-project 我有以下内容,但未创建触发器。这可能吗?有没有人有 .watchmanconfig 的例子

{
    "ignore_dirs": [
        "node_modules"
    ],
    "watched": [
        {
            "path": "/Users/michaelprescott/Projects/neuro",
            "triggers": [
                {
                    "command": [
                        "./tasks/cmds/build.sh"
                    ],
                    "expression": [
                        "anyof",
                        [
                            "match",
                            "src/*.js",
                            "wholename"
                        ],
                        [
                            "match",
                            "src/*.ts",
                            "wholename"
                        ],
                        [
                            "match",
                            "src/*.html",
                            "wholename"
                        ]
                    ],
                    "name": "build"
                }
            ]
        }
    ]
}

不,通过 .watchmanconfig 是不可能的。理由是,由于 .watchmanconfig 旨在被签入一个可以被任意人克隆的 repo,我们宁愿不允许它成为任意代码可以 运行 的工具那些明确采取行动 运行 的人。

我们的建议是将触发器的创建封装在某种脚本中,当用户想要启用触发行为时,您可以将其引导至 运行。

此外,我建议您转而查看此用例的 watchman-make;它比触发器更符合人体工程学,因为它更容易查看正在运行的命令的输出 运行 并在您希望它们停止时终止它们。

例如,您可以这样实现触发器:

watchman-make -r tasks/cmds/build.sh -p 'src/*.js' -p 'src/*.ts' -p 'src/*.html'

(单引号很重要!)