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