[Node.js] pkg

Updated:

  • Node.js 런타임을 바이너리 실행파일로 빌드하고 싶을 때 사용하는 모듈

Usage

npm install -g pkg
  • entry point는 CLI argument에 의해 결정
  • Path to entry file : /path/app.js
  • Path to package.json : pkg 키워드는 package.jsonbin 프로퍼티를 entry file로 사용
  • Path to directory : pkgpackage.json에 설정된 특정 위치를 참조

Targets

  • 특정 target machine들을 위한 실행파일 생성
  • {nodeRange}-{platform}-{arch}
    • ex) node12-win-x64
  • 옵션을 설정하지 않으면, linux, maxos, win 바이너리 모두 생성

Config

  • pkg 키워드는 소스코드를 분석하고, require 호출을 감지하여 dependencies를 실행파일에 추가
  • 하지만, require() 의 매개변수로 non-literal이 쓰이거나, js 파일이 아닌(views, css 등) 것을 사용할 때는 pkg가 처리할 수 없음
  • 따라서, scripts, assets 과 같은 프로퍼티를 package.json에 직접 추가
  • pkg .은 scripts, assets를 entry로 사용
"pkg": {
    "scripts": "build/**/*.js",
    "assets": "views/**/*"
  }

Example

// package.json
  "bin": "app.js",
  "scripts": {
    "build": "pkg ."
  },
    "pkg": {
        "assets": ["views/**/*", "public/**/*"],
        "targets": ["node12-win-x64"]
    },
  • npm run build 로 실행하여 빌드

ref :
pkg
pkg로 Node.js 애플리케이션의 하나의 바이너리로 만들기
How to create an executable (.exe) file from JavaScript code (using Node.js)

Leave a comment