如何将 Lua 脚本捆绑成单个文件

我需要基于源文件创建单个 Lua 文件。

例如,输入我有一个项目,其中有几个模块使用 require 语句。作为输出,我需要一个单一的 Lua 文件(仍然是源文件,但被捆绑在一起),然后我认为将不会有任何 require 语句。

我该如何做?

点赞
用户1381216
用户1381216

遍历所有文件,你可以将 require 函数替换成类似于以下代码的方式:

------------------------------------------------------ HEADER
local files = {}
local globalRequire = require -- 存储默认的 require 引用
local require = function(path) -- 将返回保存的文件,否则尝试默认的 lua require
    return files[path] or globalRequire(path)
end
------------------------------------------------------ START FILES
files["file1"] = function(...)
------------------------------------------------------ FILE #1 CONTENTS
local hola = require("file2")
local file1 = {}

return file1
------------------------------------------------------ FILES CONTINUE
end
files["file2"] = function(...)
------------------------------------------------------ FILE #2 CONTENTS
local file2 = {}

return file2
------------------------------------------------------ FOOTER
end
------------------------------------------------------ EOF

请注意,在大多数 Lua 文件中,你会在文件结尾返回一个值。这是因为在 Lua 中,文件在技术上是函数,所以可以这样做。同样重要的是要提供 ... 三个点参数,因为它也会传递到模块中,尽管它通常只包含模块名称。

无论如何,你可以构建一个将这些组合起来并使其工作(或进行一些微调)的脚本。

2019-11-09 03:56:28