Luarocks管理是否有类似于项目中的"./node_modules"的等效文件夹呢?

在NodeJS/NPM中,您可以创建一个package.json并运行npm install来将所有依赖项安装在项目文件夹./node_modules中(一个项目可以是应用程序或另一个模块/包)。

Ruby还有一个“bundler”系统(使用.bundle文件)可以跟踪与dir(即项目)特定的gems。

LuaRocks是否有类似的约定?或者是推荐安装到/usr$HOME

到目前为止,我已经能够获得类似的功能,但是我必须创建一个自定义的LuaRocks配置文件,并在每次想要安装rock时指定--tree = my_local_lua_rocks_dir。当然,我可以随时创建一个bash脚本。重点是似乎我正在违背一项惯例。

点赞
用户1793220
用户1793220

你可以通过使用 --tree 标志,在当前目录下创建一个目录来安装 rocks

luarocks install --tree ./lua_modules lpeg

然后,你需要在 Lua 中配置 package.pathpackage.cpath 变量(可通过 LUA_PATHLUA_CPATH 环境变量进行设置),以便它可以找到安装在其中的模块。有几种方便的方法来完成此操作:这个教程详细介绍了如何设置,包括更多的示例

2013-08-09 20:03:48
用户841803
用户841803

我决定不再使用 Vert ,而是编辑 LuaRocks 配置文件:

  1. /etc/luarocks/config.lua 中:

    rocks_servers = {
     [[http://rocks.moonscript.org/]],
     [[http://luarocks.org/repositories/rocks]]
    }
    
    rocks_trees = {
     [[/usr/local]],
     [[./my_dir]]
    }
    

    ./my_dir 是相对于当前工作目录 pwd 而不是配置文件的位置。当然,把 my_dir 改成你想要的目录名即可。

    rock_trees 的顺序很重要:在安装 Rocks 时,LuaRocks 从列表底部开始选择存储 Rock 的位置; 在运行时加载 Rocks 时,LuaRocks 从列表顶部扫描。” 来源于http://luarocks.org/en/Config_file_format

  2. 然后在你的 .bashrc 中:

    eval `luarocks path`
    export PATH=$PATH:my_dir/bin
    
  3. 但是,对于某些命令,现在必须指定树,否则它会给出混淆的错误消息:

    luarocks make --tree=my_dir
    
2013-08-10 07:33:30