使用本地包

Cac*_*tus 20 elm

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

/
  my-lib/
    elm-package.json
  my-app/
    elm-package.json
Run Code Online (Sandbox Code Playgroud)

首先,跑步 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"
}
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-package.json

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

你完成了!


Apa*_*hka 7

在todo列表中更容易使用本地包.我担心你目前的做法是最先进的.要么就像你现在这样做,要么复制包中的代码(或者来自my-lib/srcin中的符号链接模块文件夹/ .elm文件my-app/src)

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


thS*_*oft 7

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