我在本地目录中有一个Elm包(源代码+所有构建工件),我想从另一个Elm包中使用它,而不发布库。所以我的目录设置如下:
/
my-lib/
elm-package.json
my-app/
elm-package.json
首先,在库包的目录中运行elm-package install
似乎不仅仅是构建包;据我所知,它没有安装在任何全局目录中。
我已将my-lib
添加到my-app/elm-package.json
中:
"dependencies": {
"elm-lang/core": "1.0.0 <= v < 2.0.0",
"my-vendor/my-lib": "0.0.1 <= v <= 0.0.1"
}
因此,当我在依赖包的目录中运行elm-make
时,它会抱怨
您的计算机上没有
my-vendor/my-lib
个软件包的版本。
elm-package install
抱怨同样的事情。
我找到的唯一解决方法是在my-app
中创建以下符号链接:
/
my-app/
elm-stuff/
packages/
my-vendor/
my-lib/
0.0.1@ -> /my-lib/
build-artifacts/
my-vendor@ -> /my-lib/build-artifacts/my-vendor
我还必须将以下内容添加到/my-app/elm-stuff/exact-dependencies.json
:
"my-vendor/elm-lib": "0.0.1"
显然,应elm-package
自动处理所有上述内容,只要我可以将其指向/my-lib/
/my-app/
。那我该怎么做呢?
答案 0 :(得分:19)
2017年(榆木0.18)你可以做到以下几点:
如果您对已发布的软件包有依赖关系,那么您可以删除您的依赖项,例如:
"dependencies": {
"rtfeldman/elm-css": "8.2.0 <= v < 9.0.0"
}
然后执行项目的elm-make
(这应该从你的elm-stuff目录中删除包,否则它将使用包的缓存版本。然后你按照以下步骤在本地克隆和引用包。
您可以在本地引用任何elm项目,方法是将其添加到source-directories
,如下所示:
"source-directories": [
".",
"src",
"../elm-css/src"
],
elm-css有这些依赖关系:
"rtfeldman/elm-css-util": "1.0.2 <= v < 2.0.0",
"rtfeldman/hex": "1.0.0 <= v < 2.0.0"
所以也可以将这些添加到你的elm-package.json中。
你已经完成了!
答案 1 :(得分:7)
在todo列表中更容易使用本地包。我担心你目前的做法是最先进的。要么就像你现在这样做,要么复制包中的代码(或者my-lib/src
中my-app/src
的符号链接模块文件夹/ .elm文件?)
邮件列表中有关此问题的最新帖子:https://groups.google.com/d/topic/elm-discuss/i51Bor6Uers/discussion
答案 2 :(得分:7)
您可以在this enhancement request中跟踪此功能的状态。