soword科技言
永久公益免费API接口
提供永久免费的API接口,查看更多API接口,如果您有其他免费API资源,请联系我们,造福人类。
提供商务开发:小程序,系统,APP
定制开发,免费评估,免费咨询,价格便宜,售后保障,前往开发服务中心联系开发客服中心
entr:文件更改时重新运行构建

关于entr的问题,其他的网站上有很多示例,对该工具也有很好的解释

entr是一个命令行工具,可让您在每次更改一组指定文件中的任何一个时运行任意命令。您向它传递要在stdin上观看的文件列表,如下所示:

git ls-files | entr bash my-build-script.sh

要么

find . -name *.rs | entr cargo test

或您真正想要的任何东西。

我发现每次更改代码时都必须手动重新运行构建/测试非常烦人。

许多工具(例如hugo和flask)都有内置的系统,可以在更改文件时自动重建。

但是,通常我会自己编写一些自定义的构建流程(例如bash build.sh),并entr让我拥有神奇的构建经验,在此我可以立即获得有关更改是否仅用一行bash即可解决怪异错误的反馈。万岁!

重新启动服务器entr -r

但是如果您正在运行服务器,并且每次都需要重新启动服务器怎么办?entr有您-如果您通过了-r,那么

git ls-files | entr -r python my-server.py

清除屏幕(entr -c

另一个简洁的标志是-c,它使您可以在重新运行命令之前清除屏幕,从而不会因以前的版本的输出而分散注意力。

与它一起使用 git ls-files

通常,我要跟踪的文件集与我在git中拥有的文件列表大致相同,因此git ls-files很自然地将其传送到entr

我现在有一个项目,有时有时候我刚刚创建的文件还不在git中。那么,如果要包括未跟踪的文件怎么办?这是我拼凑的一点咒语:

{ git ls-files; git ls-files . --exclude-standard --others; } | entr your-build-scriot

可能只有一个git命令可以做到这一点,但我不知道它是什么。

每次添加新文件时重新启动: entr -d

git ls-files件事的另一个问题是有时我会添加一个新文件,当然它还不在git中。entr为此提供了一个很好的功能–如果通过-d,则如果在entr跟踪的任何目录中添加新文件,它将退出。

我将其与一个while循环结合使用,它将重新启动 entr以包括新文件,如下所示:

while truedo{ git ls-files; git ls-files . --exclude-standard --others; } | entr -d your-build-scriotdone

entr在Linux上的工作方式:inotify

在Linux上,entr使用inotify(用于跟踪文件系统事件(如文件更改)的系统)工作-如果跟踪它,则会看到inotify_add_watch 要求您观看的每个文件系统调用,如下所示:

inotify_add_watch(3, "static/stylesheets/screen.css", IN_ATTRIB|IN_CLOSE_WRITE|IN_CREATE|IN_DELETE_SELF|IN_MOVE_SELF) = 1152

希望这可以帮助一些人了解entr



2023-03-22 10:04:19

新人小程序+APP定制199元起


发放福利,助力中小企业发展,真正在互联网中受益

点击询问定制

广告服务展示