Я пробую cabal -dev
для проекта, над которым я работаю; проект представляет собой библиотеку, и cabal-dev
отлично справляется с созданием его изолированной версии - но у меня проблемы с частью моего рабочего процесса ...
У меня есть сценарий, scratch.hs
, который (до cabal-dev
) я загружал в ghci
для проверки. Содержимое scratch.hs
со временем меняется в зависимости от того, над какой функцией я работаю, конечно. scratch.hs
не является частью кодовой базы библиотеки, это просто мое личное рабочее пространство, пока я над ним работаю.
Теперь, чтобы получить сеанс ghci
с загруженной песочницей, я могу просто cabal-dev ghci
, а затем загрузить scratch.hs
в что. Проблема в том, что это (намеренно и разумно) исключает мою базу данных пользовательских пакетов, поэтому, если scratch.hs
ссылается на модули из пакетов, которых нет в моей библиотеке build-зависимо
( что небезосновательно - в конце концов, это не часть библиотеки), эти пакеты не видны, поэтому я получаю сообщение об ошибке, например:
scripts/scratch.hs:8:8:
Could not find module `Data.Aeson.Generic':
It is a member of the hidden package `aeson-0.3.2.11'.
Perhaps you need to add `aeson' to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
где, в данном случае, scratch.hs
хочет для импорта Data.Aeson.Generic
, но aeson
не входит в мою библиотеку build-зависимо
(вполне правильно), но есть в моей базе данных пользовательских пакетов.
Так как я могу это обойти? Я могу представить ответы в любой из этих категорий, но, возможно, есть категории, которые я пропустил:
Способ (выборочно) использовать пакеты из моей базы данных пользовательских пакетов в сочетании с песочницей, созданной cabal-dev
. (Возможно, откатил мой собственный сценарий стиля cabal-dev ghci
?)
Предложение о том, как улучшить мой рабочий процесс, чтобы проблема просто исчезла.
Я знаю, что могу просто установить пакет глобально, но я не хочу таким образом загрязнять мою глобальную базу данных пакетов (и cabal-dev
явно не одобряет этого).
Большое спасибо за все советы.