Node.JS코드 exe 파일로 패키징 하기

Node.JS 제대로 공부하기도 전에 이것부터 찾아본 계기는
파이썬 강좌를 보고 예제코드 해보다가 문득 든 생각이 “이거 만들면 실행파일은 어떻게 만들지?” 였음

파이썬 예제 따라 작동시켜 볼때 쓴 IDE 툴이 Visual Code 였는데 이건 디버그 메뉴까지만 있지 빌드 메뉴가 없음.
(이건 통합 개발 에디터 랑 비슷한거니 빌드 메뉴가 없는게 당연)

그래서 찾아보게 되고 파이썬은 윈도우 실행파일로 패키징해주는 방법이 있긴 한데 이걸로 묶어봤자 반디집에서 고대로 풀리는 단점이 있음.

이게 문제가 되는 이유는 밥벌이 수단에 파이썬을 추가하면 내 여태 해온 걸로는 만들어서 납품한게 대부분 이었는데
이럴경우 소스코드가 그대로 노출되는 문제가 있음.

거기다가 리눅스쪽은 파이썬은 거의 OS기본툴 레벨로 지원하기 때문에 대부분 패키징을 하지 않고 소스채 사용되는게 흔한일상이라고 하는 코멘트를 보고 이걸 해야 하나 말아야 하나 하는 찰라에…

구글플러스에서 한분이 파이썬은 들여쓰기 하나라도 틀리면 다른 블럭으로 인식해서 오류가 발생하는 최악의 단점이 있다는걸 보고 가볍게 포기하고 (시작한지 몇일 되지도 않아서)
비슷하면서 요즘 많이 쓰는 node.JS를 시작하면서 제일 먼저 찾아본것임.


 

node.JS용 패키징하는데 pkg 라는 모듈을 다운받아야 함. (모듈사이트 : https://www.npmjs.com/package/pkg )

사이트 가서 받을건 아니고 npm 명령으로 다운 받으면 됨.

npm install pkg

근데 이렇게 하면 현재 폴더에서만 pkg 가 지원됨
npm으로 받은 모듈들이 현재폴더에서만 쓸수 있는데 (node.JS는 폴더 기준으로 프로젝트가 묶인다고 봤음 [어디선가])
pkg 는 아마 프로젝트 마다 쓸거라 생각하고 모든 프로젝트에서 다 사용 가능하게 할려면 글로벌 옵션을 붙여서 받아야 함.

npm install -g pkg

이렇게 하면 매 프로젝트마다 pkg 모듈을 받을필요가 없이 빌드가 됨.

npm root -g

글로벌 옵션 붙일때 어디 폴더에 설치되었나 확인하는 명령

const a = 2;
a;
a + 4;
console.log(a);

간단한 소스 만들고

PS C:\Projects\NodeJSTest> pkg .\main.js
> pkg@4.3.4
> Targets not specified. Assuming:
  node8-linux-x64, node8-macos-x64, node8-win-x64
> Fetching base Node.js binaries to PKG_CACHE_PATH
  fetched-v8.11.3-linux-x64    [====================] 100%
  fetched-v8.11.3-win-x64      [====================] 100%
  fetched-v8.11.3-macos-x64    [====================] 100%
PS C:\Projects\NodeJSTest>

pkg 소스파일 치면 됩니다.

-t 옵션으로 node.JS 버전이나  OS, CPU타입등을 지정할수 있습니다.
단 CPU 타입은 현재 빌드하는 시스템이 지원하는 범위내에서만 가능합니다.

Odroid가 ARM 계열이라는걸 깜빡하고 이걸로 빌드한 리눅스 파일을 올려 실행하니 안되더군요 ㅋㅋㅋㅋ
그래서 armv7 옵션을 주고 빌드하면 에러가 쭉쭉 나오길래

PS C:\Projects\NodeJSTest> pkg -t latest-linux-armv7 ./main.js
> pkg@4.3.4
> Fetching base Node.js binaries to PKG_CACHE_PATH
  fetched-v10.4.1-win-armv7    [                    ] 0%
> Error! 404 Not Found
  https://github.com/zeit/pkg-fetch/releases/download/v2.5/uploaded-v2.5-node-v10.4.1-win-armv7
> Asset not found by direct link:
  {"tag":"v2.5","name":"uploaded-v2.5-node-v10.4.1-win-armv7"}
> Not found in GitHub releases:
  {"tag":"v2.5","name":"uploaded-v2.5-node-v10.4.1-win-armv7"}
> Building base binary from source:
  built-v10.4.1-win-armv7
> Error! Not able to build for 'armv7' here, only for 'x64'
PS C:\Projects\NodeJSTest>

처음에는 윈도우용이 뭔가 꼬였나보다 싶어서 Odroid에다가  node.JS 설치하고 빌드해보는 삽질했는데
역으로 Odroid에서 x64용 파일 생성 시도하니 안되더군요.

뭐 암튼 그렇습니다.
Node.JS 열심히 파서 이것저것 만들어봐야겠습니다.


크리에이티브 커먼즈 라이선스Linsoo의 저작물인 이 저작물은(는)크리에이티브 커먼즈 저작자표시-동일조건변경허락 4.0 국제 라이선스에 따라 이용할 수 있습니다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.