【问题标题】:Does luarocks management have "./node_modules" equivalent for projects?luarocks 管理是否具有与项目等效的“./node_modules”?
【发布时间】:2013-08-11 13:02:14
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: lua luarocks


    【解决方案1】:

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

    luarocks install --tree ./lua_modules lpeg
    

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

    【讨论】:

    • 非常感谢。这个答案消除了我的很多困惑。
    【解决方案2】:

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

    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 尝试从列表底部开始选择存储岩石的位置;在运行时加载岩石时,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
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-28
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-15
      • 1970-01-01
      相关资源
      最近更新 更多