lua-users home
lua-l archive

Re: require() relative to calling file

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


It was thus said that the Great Daurnimator once stated:
> On 4 February 2017 at 20:23, Sean Conner <sean@conman.org> wrote:
> > Where do you add the "application path"? Do you prepend it to
> > package.path? Or append it to package.path?
> 
> You don't want to modify package.path for this type of functionality.
> A key note is that the string you pass to the `require` function is
> what the module is saved under in `package.loaded`.
> It *has* to be something a function that wraps or re-implements
> `require` itself.
> 
> Now I ask: why are we taking about this in relation to file systems?
> package searchers can be abstract, and don't have to be bound by a
> file system layout.
> I think the only reasonable way to accomplish a 'relative require' is
> to use the *current* module path as a prefix.
 The question wasn't loading modules relative to other modules, but
relative to a non-module script. The example was:
	foo/
	 app.lua	-- require "module"
	 module.lua
If you are in foo/, then "lua app.lua" works. But it fails if you aren't in
foo---"lua foo/app.lua". What you are talking about is subtly different,
but probably related.
 -spc

AltStyle によって変換されたページ (->オリジナル) /