2011-06-12 7 views
4

요즘 SBT와 함께 스칼라를 사용하고 있습니다. REPL 루프에는 편리한 기능이 있습니다 : ~ COMMAND, 즉 프로젝트의 모든 소스 파일 변경에 대해 COMMAND를 수행합니다. 예를 들어 :하스켈 빌드 생태계에서의 SBT 형 기능

~ test 

~ compile 

신속한 개발을위한 굉장히 유용합니다. 나도 궁금해 하스켈과 비슷한 무언가를 아는 사람이 있을까?

답변

9

inotifywait을 사용하면 매우 쉽게 얻을 수 있습니다.

그냥 프로젝트 디렉토리에 터미널을 화재와 같은 것을 실행 :이 또한 다른 언어 작동

$ while inotifywait -qq -r -e modify .; do cabal build && ./dist/build/tests/tests; done 

을; 그냥 원하는 빌드 명령을 삽입하십시오.

+0

매우 실용적입니다. 감사. – troutwine

3

ghci를 스크립트하여 사용자 정의 명령을 정의하고 기존 명령을 보완 할 수 있습니다. 이렇게하려면 다음을 수행

  • define a ~/.ghci file
  • 는 예를 들어, 대체 :def를 사용하여 매크로를 작성 GHCi :def 명령에 :reload

자세한 정보는 here입니다.

+2

마크가 다소 잘못 생각합니다. 목표는 소스 변경시 트리거 된 임의의 명령을 반복하는 것입니다. GHCi를 통해 이러한 목표를 달성하는 것은 뒤떨어져있다. GHCi는 "카발 테스트"에 대해 어떻게 알고 있습니까? SBT에 해당하는 "캐럴 셸"은 다시 트리거 된 GHCi 매크로보다 약간 큽니다. 카발은 GHCi보다 프로젝트에 대한 더 많은 정보를 가지고 있습니다. 자원에 감사드립니다. – troutwine

+0

아, 그래. 그래서 약간 다릅니다. 그렇습니다. inotify와 카발 빌드로 무언가를 접하는 것은 재미있을 것입니다. –

+0

위대한; 알아 둘만한. – troutwine

3

ghcid 프로젝트는 ~ :reload으로 제한되는 것을 제공합니다. 몇 가지 추가 기능 (고정 된 행 수의 형식, 이전에로드 된 파일의 경고 지속)을 제공하지만 명령 실행의 일반성은 제공하지 않습니다.