Build 如何将Lua脚本绑定到单个文件

Build 如何将Lua脚本绑定到单个文件,build,lua,bundle,Build,Lua,Bundle,我需要基于源文件创建单个lua文件 i、 e作为输入,我有一些项目,其中有几个模块使用require语句。作为输出,我需要一个lua文件(仍然是源文件,但已绑定),然后我想它将不会有任何require语句 如何操作?遍历所有文件,您可以将require函数替换为以下内容: ------------------------------------------------------ HEADER local files = {} local globalRequire = require -- S

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

i、 e作为输入,我有一些项目,其中有几个模块使用require语句。作为输出,我需要一个lua文件(仍然是源文件,但已绑定),然后我想它将不会有任何require语句


如何操作?

遍历所有文件,您可以将require函数替换为以下内容:

------------------------------------------------------ HEADER
local files = {}
local globalRequire = require -- Store default require reference
local require = function(path) -- Will return saved file or attempt default 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文件中,您是如何在EOF时返回某些内容的?这是因为lua中的文件在技术上是函数,所以可以这样做。还必须提供(…)三点参数,因为它也会传递给模块,尽管它通常只包含模块名


无论如何,您可以构建一个脚本,将这些内容放在一起,它应该可以工作,或者进行一些调整。

是否将所有脚本的内容复制到一个脚本中?我假设您需要脚本文件,如果您使用的是非纯lua模块,则无法“捆绑”所有内容。为什么要将源代码“捆绑”到单个文件中?@Nifim我需要捆绑的地方只使用单个文件。我想它应该有一些用于捆绑的构建工具。@Pieget我不能只复制内容,因为某些模块可能需要多次=>我需要创建依赖关系图等等。。。我希望有这样的构建工具。你不能多次需要这些东西。他们只会被执行一次。这就是我们的全部目的。如果您希望将所有代码都放在一个文件中,那么您可以完全控制整个代码。如果您只有用Lua编写的模块,那么如果您知道require的功能,那么很明显应该做什么。