Haskell Cabal компилирует.js во время сборки

Допустим, я создаю веб-приложение с haskell как на стороне сервера, так и на стороне клиента. На этапе сборки я хочу скомпилировать код на стороне сервера с ghc и клиентский код с некоторым транспортом haskell для js.

Инструменты транспортера haskell предоставляют исполняемый файл, который мне нужно скормить .hs файлы и он будет компилироваться в .js файлы. Как указать в cabal запуск внешних программ на этапе сборки? Я вижу, что UserHooks поле buildHook имеет тип возврата IO()так что теоретически я могу, вероятно, использовать, например, библиотеку shelly для выполнения шелл-кода для запуска транспилятора, но я не знаю, является ли это самым чистым решением.

1 ответ

Вот пост, который я написал о решении той же проблемы.

Обычно плохая идея использовать пользовательские установочные файлы, поскольку для них нет способа обработки зависимостей, и если вы сначала не установите эти зависимости, вы даже не сможете sdist,

Я считаю, что это хорошо, когда есть опция командной строки, которая предварительно компилирует код при запуске веб-сервера.

Другой вариант - иметь make-файл, который компилирует оба.

Другие вопросы по тегам