goplus / igop

The Go/Go+ Interpreter

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

不能引用vendor文件夹的包

456vv opened this issue · comments

commented

我的意思是编译成二进制之后,无法引用。虽然有 Context.External,但不知道如何实现。

如果不使用 mod,而只使用 vendor ,那么 qexp 导出的包应该没有什么区别,直接 import 就可以了。导入路径里不要带有 vendor 。

commented

你可能不理解我的想法,我不能所有包都压到二进制中去,因为一些它不是必要的。

commented

期待功能,编译成二进制之后,在模板中再次能调用到模板目录中的venodr或上层的vendor目录内的包。

明白了,目前缺少加载源码包功能,在计划中。

igop 已支持从 GOMOD 项目源码直接加载,但不支持 vendor。

如果想从 vendor 加载,目前提供有两种方式定制.

  1. 少量的包可以使用 ctx.AddImportDir(path string, dir string) error 支持。
  2. 可以使用类似下面的方式自己提供 path -> dir 转换.
	ctx := igop.NewContext(0)
	ctx.Lookup = func(root, path string) (dir string, found bool) {
		dir = filepath.Join(root, "vendor", path)
		if info, err := os.Stat(dir); err == nil && info.IsDir() {
			found = true
		}
		return
	}
	_, err := ctx.Run(projdir, nil)
	if err != nil {
		panic(err)
	}