我在本地目录中有一个Elm包(源代码+所有构建工件),我想从另一个Elm包中使用它,而不发布库.所以我的目录设置如下所示:
/
my-lib/
elm-package.json
my-app/
elm-package.json
Run Code Online (Sandbox Code Playgroud)
首先,跑步 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"
}
Run Code Online (Sandbox Code Playgroud)
所以当我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
Run Code Online (Sandbox Code Playgroud)
我还必须添加以下内容/my-app/elm-stuff/exact-dependencies.json:
"my-vendor/elm-lib": "0.0.1"
Run Code Online (Sandbox Code Playgroud)
显然,上述所有的应采取的自动照顾的elm-package,只要我能在这点/my-lib/从/my-app/.那我该怎么做?
Joe*_*Joe 20
在2017年(榆木0.18),您可以执行以下操作:
如果您对已发布的本地包有依赖关系,请删除您的依赖关系,例如:
"dependencies": {
"rtfeldman/elm-css": "8.2.0 <= v < 9.0.0"
}
Run Code Online (Sandbox Code Playgroud)
然后执行elm-make您的项目(这应该从您的elm-stuff目录中删除该包,否则它将使用该包的缓存版本.然后您按照以下步骤在本地克隆和引用该包.
您可以通过将其添加到本地来引用任何elm项目,source-directories如下所示:
"source-directories": [
".",
"src",
"../elm-css/src"
],
Run Code Online (Sandbox Code Playgroud)
elm-css有这些依赖关系:
"rtfeldman/elm-css-util": "1.0.2 <= v < 2.0.0",
"rtfeldman/hex": "1.0.0 <= v < 2.0.0"
Run Code Online (Sandbox Code Playgroud)
所以也要将它们添加到你的elm-package.json中.
你完成了!
在todo列表中更容易使用本地包.我担心你目前的做法是最先进的.要么就像你现在这样做,要么复制包中的代码(或者来自my-lib/srcin中的符号链接模块文件夹/ .elm文件my-app/src)
邮件列表中有关此问题的最新帖子:https://groups.google.com/d/topic/elm-discuss/i51Bor6Uers/discussion