1

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"
                }
            ]
        }
    ]
}
4

1 回答 1

0

不,这是不可能的.watchmanconfig。理由是,由于.watchmanconfig旨在检查到可能被任意人克隆的存储库,我们宁愿不允许它成为可以在没有这些人明确采取行动运行的情况下运行任意代码的工具.

我们的建议是将触发器创建包含在某种脚本中,您可以指导用户在他们想要启用触发行为时运行该脚本。

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

例如,您可以通过这种方式实现触发器:

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

(单引号很重要!)

于 2017-09-21T04:30:39.753 回答