Google AdSense (text)

hidden logo stop

Moving

거지 같은 이글루스 광고노출 정책이 싫어서,
새 보금자리(http://blog.leocat.kr/)로 이사감.

[SublimeText2] node.js build system 만들기 (Windows 샘플 포함) Computer & Program

최근까지 Sublime Text 2를 단순한 에디터로만 사용하고 있었는데, 우연한 기회에 몇 가지 기능을 본 후로 ST2의 생태계가 상당히 크다는 것을 알았다. (Mac을 쓰면서 무료이기 때문에 단순 에디터로 썼었는데 알면 알수록 와방 조아~ @ㅅ@) Build system과 package 등 여러 확장 기능을 만들 수도 있고, package는 그 종류도 많기 때문에 Sublime Package Control이라는 package들을 찾아보고 설치 및 업데이트를 도와주는 package도 있을 정도이다. Sublime Pakacage Control에서 손쉽게 설치할 수 있는 pacakge 목록은 http://wbond.net/sublime_packages/community에서 확인할 수 있다.

오늘은 이 ST2에서 node.js를 쉽게 실행할 수 있게 build system을 만들어 볼까 한다. MacOS나 Linux 같은 경우는 이 포스트(http://www.myrocode.com/post/2011/09/29/Nodejs-setup-your-IDE-with-Sublime-Text-Editor-2.aspx)를 따라하면 크게 문제가 되지 않는데, Windows에서는 조금 다른 상황이 있기 때문에 삽질을 좀 했다.


새로 만들 파일은 2개이다. (1개 파일로도 단순 실행 기능은 가능하지만, 원하는 기능을 수행하기 위해 shell script 또는 batch 파일을 실행하도록 만든다.)

1. 메뉴에서 Tools -> Build System -> New Build System...을 선택한다.

2. 새로 열린 창에 아래와 같은 내용을 쓰고 pakcage 폴더 아래로 저장한다. 나는 "C:\Users\[[사용자이름]]\AppData\Roaming\Sublime Text 2\Packages\User\nodejs.sublime-build"로 저장했다. Package 폴더 경로는 메뉴에서 Preferences -> Browse Packages...를 선택하면 간단하게 확인할 수 있다. (MacOS의 경우는 메뉴에서 Sublime Text 2 -> Preferences -> Browse Packages...로 확인할 수 있으며 [[사용자홈]]/Library/Application Support/Sublime Text 2/Packages/User/nodejs.sublime-build로 저장했다.)
{
    "cmd": ["nodejsRun.sh", "$file"],
    "selector": "source.js",
    "path": "[[사용자홈]]/Library/Application Support/Sublime Text 2/Packages/User",
    "windows": {
        "cmd": ["nodejsRun.bat", "$file"],
        "path": "C:\\Users\\[[사용자이름]]\\AppData\\Roaming\\Sublime Text 2\\Packages\\User"
    }
}

위 파일의 자세한 설명은 build system doc에 있지만 살짝 설명하면, Ctrl + B (MacOS의 경우 Cmd + B)를 누르면 "cmd"에 있는 "nodejsRun.bat" 명령이 전달인자 "$file"을 가지고 실행된다. 명령이 실행되는 위치는 "path"경로에서 실행된다. "selector"는 Ctrl + B를 눌렀을 때 현재 파일이름에 따라 어떤 build system을 사용할지 선택할 수 있다. node.js는 js확장자를 가지기 때문에 "source.js"를 사용하면 된다.
그리고 각 OS에 따라 실행할 명령이 다른 경우 "windows", "osx", "linux" 등을 사용해서 재정의할 수 있다. 위의 예제에서는 MacOS와 windows에서 함께 사용하기 위해 windows의 "cmd"와 "path"를 재정의한 내용이다.

3. 메뉴에서 File -> New File을 선택해서 새 파일을 열고, 실제 동작할 내용을 적어준다.
Windows는 위에서 설정한 "path" 경로에 "nodejsRun.bat"로 아래 내용을 저장한다. Windows는 bat 확장자를 사용하면 batch script로 동작하니 실행권한을 따로 부여하지 않아도 된다.
@echo off
taskkill /IM node.exe /F
"C:\\Program Files\\nodejs\\node.exe" %1

MacOS도 마찬가지로 위에서 설정한 "path" 경로에 "nodejsRun.sh"로 아래 내용을 저장한다. 그리고 "chmod +x nodejsRun.sh"로 실행 권한을 부여한다.
#!/bin/sh
/usr/bin/killall node
/usr/local/bin/node $1

기존의 node 프로세스를 중지시키기 위해 Windows에서는 taskkill을 사용했고, MacOS에서는 killall을 사용했다. 이 부분은 필요 없다면 제거해도 상관없다. 그리고 Linux 계열에서는 전달인자를 $로 사용하지만, Windows에서는 %를 사용해야 한다.

4. 테스트로 test.js로 저장한 파일에서 Ctrl + B 또는 Cmd + B를 눌러보자.

Decode error라고 나오는건 taskkill의 결과 출력이 한글윈도에서 ascii 영역을 벗어나서 나는 문제 같다. 그 결과를 받아서 output 영역에 뿌려줘야 하는데 말이다.

+ 추가 정보
매번 build system을 통해서 새로 build 하기 힘든 경우는 node-supervisor를 사용하는 것도 정시 건강에 좋을 수 있다.


- 참조
Build Systems - Sublime Text Unofficial Documentation
Nodejs: setup your IDE with Sublime Text Editor 2
Sublime Package Control

덧글

댓글 입력 영역

Google AdSense (text/image)