NodeJS 소스를 실행파일로 패키징 하기

node.JS용 패키징 할려면 pkg라는 모듈을 받아야 하는데 아래 npm 명령으로 다운받음

npm install 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 타입은 현재 빌드하는 시스템이 지원하는 범위내에서만 가능합니다.
(x86은 x86계열 OS만… ARM은 ARM 계열 OS만)

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 열심히 파서 이것저것 만들어봐야겠습니다.


Comments

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다