我想将Hammerspoon中使用的init.lua
脚本分开,以提高可读性和维护性。
所以看起来如下:
然后从init.lua
开始,我会阅读这些文件并激活观察者。
然而,似乎没有定义这样的功能(可能我可能会错过它)。是否有可能像Hammerspoon那样分离逻辑?
答案 0 :(得分:4)
是的,您可以使用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 setup file。这引用了默认的Lua package.path,它在luaconf.h中定义。
如果要将Lua模块放在package.path中未包含的目录中,可以将它们添加到LUA_PATH_5_3
或LUA_PATH
环境变量中。
免责声明:我从Hammerspoon源代码中获得了这些信息,但我没有Mac,所以我还没有对它进行测试。如果它不适合你,请告诉我。 :)