LuaRocks简单入门

2024-02-21 11:11 雾和狼 518

安装Lua

首先,在终端中运行 lua -v 来检查系统上是否已经安装了 Lua。

{ lua -v 
Lua 5.4.4 Copyright (C) 1994-2022 Lua.org, PUC-Rio

macOS操作系统

{ brew install lua

Linux操作系统

{ apt install lua5.3

Hello World

安装 Lua 后,创建一个简单的测试程序来验证一切是否按预期工作。

-- src/main.lua 
local greeting = "Hello, World." 
print(greeting)

在终端中执行lua脚本:

{ lua src/main.lua 
Hello, World.

使用 LuaRocks 进行依赖管理

LuaRocks 是 Lua 包管理器,用于管理项目依赖项,需要在系统上安装 LuaRocks 命令行工具。

macOS

{ brew install luarocks

Linux

{ apt install luarocks

项目文件夹设置

安装 LuaRocks 后,使用 init 命令设置项目。

{ luarocks init --lua-versions "5.1,5.2,5.3,5.4"

init 命令将执行以下几项操作:

  • 创建 lua_module 文件夹并存储所有已安装的依赖项。
  • 检测 src/main.lua 作为程序的主要入口点。
  • 添加两个执行 lua luarocks 命令的快捷方式。
  • 添加一个 .luarocks 一些配置文件的文件夹,并将该目录标记为 LuaRocks 的根文件夹。
  • 创建或添加 .gitignore 文件。
  • 创建 .rockspec 文件

.gitignore文件

luarocks init 命 令会自动生成一个 .gitignore ,并添加以下配置。

/luarocks /lua /lua_modules /.luarocks

.rockspec文件

.rockspec 文件定义项目的属性,如名称、版本和使用的依赖项。

rockspec_format = "3.0"

source.url 可以是指向项目的 git 存储库,也可以是其他存储库类型或 URL。

source = { url = "https://github.com/demo/lua-demo.git" }

description 包含摘要、项目主页、许可证等信息。

description = { summary = "the Lua demo repository", homepage = "https://demo/lua/", license = "MIT" }

dependencies 用户添加项目的依赖项。

dependencies = { "lua >= 5.1, < 5.5" }

build 项目的构建设置

build = { type = "builtin", modules = { main = "src/main.lua" } }

最后使用 luarocks lint 命令,验证的文件的正确性。

{ luarocks lint lua-demo.rockspec

安装模块

安装inspect 模块,该模块提供了在 Lua 中打印值以进行检查或调试的简单方法。

{ luarocks install inspect

然后将依赖项添加到 .rockspec 文件中。

dependencies = { "lua >= 5.1, < 5.5", "inspect >= 3.1" }

当从代码仓库中拉取项目代码后,执行如下命令,用来在项目中安装项目所需的所有依赖项。

{ luarocks install --deps-only lua-demo.rockspec

使用 inspect 打印,并观察打印结果。

-- src/main.lua local 
inspect = require("inspect") 
local output = { "Hello, world.", 42 } 
print(inspect(output))

解析模块路径

可以在 src/setup.lua 文 件配置 package.path package.cpath 两个路径变量。

-- src/setup.lua 
local version = _VERSION:match("%d+%.%d+") 
package.path = 'lua_modules/share/lua/' .. version .. '/?.lua;lua_modules/share/lua/' .. version .. '/?/init.lua;' .. package.path package.cpath = 'lua_modules/lib/lua/' .. version .. '/?.so;' .. package.cpath

通过 lua 命令 -l 的选项来执行:

{ lua -l src/setup src/main.lua

LuaRocks

使用 LuaRocks 时,务必注意软件包的安装位置。通过 luarocks init 设置项目后,所有软件包都安装在本地的项目文件夹内。

不在项目目录中的另一种选择是使用 --local 标志。例如,在当前工作目录中,需要使用 --tree 该标志,将路径传递给文件夹。

{ luarocks install --tree=lua_modules inspect

启用本地脚本

使用 LuaRocks 安装可执行文件时,这些二进制文件会安装在 lua_modules/bin 目录中。

通常情况下,要执行脚本,需要使用完整路径。

{ ./lua_modules/bin/some-script --argument ...

为了简化这一点,可以将本地 bin 文件夹添加到系统 PATH 中。

# .envrc export LUA_INIT="@src/setup.lua" export PATH={PATH:./lua_modules/bin

在项目目录中执行时,可以简化为以下命令。

{ some-script --argument ...

自动格式化代码

LuaFormatter 是lua的代码格式化工具,通过 LuaRocks 安装:

{ luarocks install luaformatter

使用luaformatter工具对代码进行格式化:

{ lua-format --in-place src/**/*.lua

静态分析

如果想对项目代码进行 lint(代码质量分析或检测),可以Luacheck工具:

{ luarocks install luacheck

然后使用luacheck命令验证lua文件:

{ luacheck src 
Checking src/main.lua OK 
Checking src/setup.lua OK 

Total: 0 warnings / 0 errors in 2 files