使用本地包
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/src
中 my-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 中。
大功告成!
我在本地目录中有一个 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/src
中 my-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 中。
大功告成!