我在本地目录中有一个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/
自动处理。那我该怎么做?
在todo列表中更容易使用本地包。我担心你目前的做法是最先进的。要么就像你现在这样做,要么复制包中的代码(或者my-lib/src
中my-app/src
的符号链接模块文件夹/ .elm文件?)
关于这个问题的邮件列表上的最新帖子:https://groups.google.com/d/topic/elm-discuss/i51Bor6Uers/discussion
在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中。
你完成了!
您可以在this enhancement request中跟踪此功能的状态。