25

我在本地目录中有一个 Elm 包(源 + 所有构建工件),我想从另一个 Elm 包中使用它,而不发布库。所以我的目录设置如下所示:

/
  my-lib/
    elm-package.json
  my-app/
    elm-package.json

首先,elm-package install在库包的目录中运行似乎除了构建包之外没有做任何其他事情;据我所知,它没有安装在任何全局目录中。

我已经添加my-libmy-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/from /my-app/。那么我该怎么做呢?

4

3 回答 3

22

在 2017 (elm 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-package.json

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 中。

你完成了!

于 2017-06-10T05:01:02.297 回答
7

更容易使用本地包在待办事项列表中。恐怕您目前的方法是最先进的。要么像你现在做的那样做,要么从包中复制代码(或者可能是符号链接模块文件夹/.elm文件my-lib/srcmy-app/src

邮件列表中关于此问题的最新主题:https ://groups.google.com/d/topic/elm-discuss/i51Bor6Uers/discussion

于 2015-01-23T14:40:33.903 回答
7

您可以在此增强请求中跟踪此功能的状态。

于 2015-06-10T21:25:29.740 回答