Использование локальных пакетов

У меня есть пакет 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

Ответ 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.

Вы закончили!