Использование локальных пакетов
У меня есть пакет Elm (source + all build artifacts) в локальном каталоге, и я хотел бы использовать его из другого пакета 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/
[email protected] -> /my-lib/
build-artifacts/
[email protected] -> /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/
. Итак, как мне это сделать?
Ответы
Ответ 1
Более простое использование локальных пакетов находится в списке задач. Боюсь, что ваш нынешний подход - это современное состояние. Либо сделайте это так, как сейчас, либо сделайте это сейчас, либо скопируйте код из пакета (или, возможно, папки с символическими ссылками/файлы .elm из my-lib/src
в my-app/src
?)
Самый последний поток в списке рассылки по этой проблеме: https://groups.google.com/d/topic/elm-discuss/i51Bor6Uers/discussion
Ответ 2
Вы можете отслеживать статус этой функции в этот запрос расширения.
Ответ 3
В 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-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.
Вы закончили!