我想分离init.lua
Hammerspoon 中使用的脚本以增强可读性和可维护性。
所以它看起来像下面这样:
- 初始化.lua
- AppWatcher.lua
- WiFiWatcher.lua
- KeyRemap.lua
然后我会从内部init.lua
读取这些文件并激活观察者。
但是,似乎没有定义这样的函数(但也许我可能会错过它)。是否可以像在 Hammerspoon 中那样分离逻辑?
我想分离init.lua
Hammerspoon 中使用的脚本以增强可读性和可维护性。
所以它看起来像下面这样:
然后我会从内部init.lua
读取这些文件并激活观察者。
但是,似乎没有定义这样的函数(但也许我可能会错过它)。是否可以像在 Hammerspoon 中那样分离逻辑?
是的,您可以使用require来做到这一点。
如果你把你的 Lua 文件放进去~/.hammerspoon/
,你就可以使用require('modulename')
. 例如,如果您有以下模块:
~/.hammerspoon/AppWatcher.lua
~/.hammerspoon/WiFiWatcher.lua
~/.hammerspoon/KeyRemap.lua
然后你可以像这样加载它们~/.hammerspoon/init.lua
:
local AppWatcher = require('AppWatcher')
local WiFiWatcher = require('WiFiWatcher')
local KeyRemap = require('KeyRemap')
你可以加载任何 Lua 模块,只要它们出现在package.path中。要查看您可以使用的目录,请查看 HammerSpoon 的package.path 设置文件。这引用了在luaconf.h中定义的默认 Lua package.path 。
如果要将 Lua 模块放在 package.path 中未包含的目录中,可以通过将它们添加到环境变量LUA_PATH_5_3
或LUA_PATH
环境变量中来实现。
免责声明:我从 Hammerspoon 源代码中获得了此信息,但我没有 Mac,所以我没有对其进行测试。让我知道它是否不适合你。:)