使用本地包

Using local packages

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

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

首先,库包目录中的 运行ning 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 在依赖包的目录中时,它会抱怨

There are no versions of package my-vendor/my-lib on your computer.

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 自动处理 ,如果我能从 [=24] 指向 /my-lib/ =].那我该怎么做呢?

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

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

您可以在 this enhancement request 中跟踪此功能的状态。

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

大功告成!