luarocks管理是否有“./node_modules”等同于项目?

时间:2013-08-09 14:40:47

标签: lua luarocks

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

Ruby还有一个“捆绑”系统(使用.bundle文件),可以跟踪特定于目录(即项目)的宝石。

LuaRocks有类似的约定吗?或者是否建议将所有内容安装到/usr$HOME

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

2 个答案:

答案 0 :(得分:5)

可以使用--tree标志将岩石安装到当前目录下的目录中:

luarocks install --tree ./lua_modules lpeg

然后您必须在Lua中配置package.pathpackage.cpath变量(可通过LUA_PATHLUA_CPATH环境变量设置),以便找到安装在其中的模块。有几种方法可以方便地执行此操作:tutorial explains how to do it, with more examples

答案 1 :(得分:1)

我没有使用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的顺序很重要:当安装岩石时,LuaRocks会尝试从列表底部开始选择存储岩石的位置;在运行时加载岩石时,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
    
相关问题