Я пробую cabal-dev
для проекта, над которым я работаю;проект представляет собой библиотеку, и cabal-dev
делает большую работу по созданию его изолированной версии - но у меня возникают проблемы с частью моего рабочего процесса ...
У меня есть скрипт, scratch.hs
, который (до cabal-dev
) я бы загрузил в ghci
для того, чтобы что-то попробовать.Содержание scratch.hs
меняется со временем, в зависимости от того, над какой функцией я работаю, конечно.scratch.hs
не является частью кодовой базы библиотеки, это всего лишь мое личное пространство, пока я над ним работаю.
Теперь, чтобы получить сеанс ghci
с загруженной песочницей, я могу простоcabal-dev ghci
, а затем загрузите scratch.hs
в это.Проблема в том, что это (по замыслу и разумно) исключает мою базу данных пользовательских пакетов, поэтому, если scratch.hs
ссылается на модули из пакетов, которых нет в моей библиотеке build-depends
(что не является неразумным - это не часть библиотеки после того, каквсе), эти пакеты не видны, и поэтому я получаю сообщение об ошибке, например:
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-depends
моей библиотеки (вполне правильно), но - это в моей базе данных пакетов пользователя.
Так как я могу обойти это?Я могу представить ответы в любой из этих категорий, но, возможно, есть категории, которые я пропустил:
Способ (выборочно) использовать пакеты из моей базы данных пользовательских пакетов в сочетании с песочницейсозданный cabal-dev
.(Возможно, мой собственный сценарий в стиле cabal-dev ghci
?)
Предложение о том, как улучшить мой рабочий процесс, чтобы проблема просто исчезла.
Я знаю, что мог бы просто установить пакет глобально, но я не хотел бы таким образом загрязнять мою глобальную базу данных пакетов (и cabal-dev
явно препятствует этому).
Большое спасибо за все советы.