I'm working on a library with multiple layers of functionality. I want developers to be able to import only the parts they need, ie mylib-core
, mylib-feature1
, mylib-feature2
, etc. Each lives in its own git repo. I'd also like to provide a simple mylib
package which exposes a default set of functionality which is useful for developers new to the library. See d3.js version 4+ for something very similar to what I'm trying to accomplish.
The problems I've run into are
Apparently you can't share a package name between packages. This is a problem because it would be nice to import all the desired repos and then simply have everything available under the mylib
name.
I don't see an obvious way to re-export functionality, in order to build the default mylib
package.
Are there good solutions or a more idomatic go way to accomplish what I'm shooting for?
Answering your question, there is no idiomatic way of doing what you want. It is common in JavaScript to import a library and export its members without interference. This is not the case in Golang.
I advise you to host your whole library under a single repo, and split the functionality to packages. The Go compiler will only compile and use the imported packages.
And a tip for the future, Go is very different than almost any other language you previously know