Programing

Node.js 애플리케이션을 단일 실행 파일로 어떻게 배치합니까?

crosscheck 2020. 6. 30. 20:43
반응형

Node.js 애플리케이션을 단일 실행 파일로 어떻게 배치합니까? [복제]


이 질문에는 이미 답변이 있습니다.

Node.js 애플리케이션을 작성했으며 이제 배포하려고합니다. 물론 사용자가 쉽게 사용할 수 있도록하기 위해 Node.js를 설치하고 실행 npm install한 다음 수동으로 입력 하는 것을 원하지 않습니다 node app.js.

내가 선호하는 것은 단일 실행 파일, 예를 들어 .exeWindows 파일이었습니다.

어떻게 접근 할 수 있습니까?

나는 이 스레드를 알고 있습니다 . 어쨌든 이것은 단지 Windows에 관한 것입니다. 플랫폼 독립적 방식으로 어떻게 이것을 달성 할 수 있습니까? 어떤 아이디어? 모범 사례? ...?

완벽한 솔루션은 소스 폴더를 제공 할 수있는 "컴파일러"였습니다. 소스 폴더에는 다양한 .js파일, node_modules폴더 및와 같은 일부 메타 데이터에 앱 자체가 포함되어 있습니다 package.json. 출력은 Windows, OS X 및 Linux와 같은 다양한 플랫폼에 대한 이진이어야합니다.

아, 그리고 중요한 것 : 내가 만들고 싶어하지 않는 모든 통화 그래서에, 소스 코드를 변경 require이 상대 경로는 패키지 응용 프로그램 내에서 지금 경우에도 상대해야 여전히 경로 작업과 함께.

어떤 아이디어?

추신 : 사용자가 Node.js를 독립적으로 설치하는 것을 원하지 않습니다. 실행 파일에도 포함되어야합니다.


한편 나는 (나를 위해) 완벽한 솔루션을 발견했다 : nexe 는 모든 모듈을 포함하여 Node.js 응용 프로그램에서 단일 실행 파일을 만듭니다.

이상적인 솔루션의 다음으로 가장 좋은 방법입니다.


먼저, 워크샵, 데모 등을 위해 Node.js 앱을 패키징하는 것에 대해 이야기하고 있는데, 최종 사용자가 설치 및 종속성에 신경을 쓸 필요없이 앱을 "실행 중"으로 만드는 것이 편리합니다.

다음 설정을 시도 할 수 있습니다.

  1. 앱 소스 코드 받기
  2. npm install로컬 node_modules 디렉토리 에 대한 모든 종속성 (package.json을 통해) . 이진 종속성의 경우 별도로 지원하려는 각 플랫폼에서이 단계를 수행해야합니다.
  3. Windows 의 Node.js 바이너리 – node.exe ( OS X / Linux의 / usr / local / bin / node) 를 프로젝트의 루트 폴더에 복사하십시오. OS X / Linux에서는 Node.js 바이너리의 위치를로 찾을 수 있습니다 which node.

Windows의 경우 :
자동 압축 풀림 아카이브 작성, 7zip_extra 는 추출 직후 명령을 실행하는 방법을 지원합니다. http://www.msfn.org/board/topic/39048-how-to-make-a-7-zip -스위치리스 인스톨러 / .

OS X / Linux의 경우 : makeself 또는 unzipsfx
와 같은 도구를 사용할 수 있습니다 (기본적으로 정의 된 CHEAP_SFX_AUTORUN으로 컴파일되었는지는 모르겠습니다).

이러한 도구는 아카이브를 임시 디렉토리로 추출하고 지정된 명령 (예 :)을 실행하고 node app.js완료되면 모든 파일을 제거합니다.


죽은 말을 이길 수는 없지만 설명하는 솔루션은 Node-Webkit 과 매우 흡사 합니다.

힘내 페이지에서 :

node-webkit은 Chromium 및 node.js를 기반으로하는 앱 런타임입니다. node-webkit을 사용하여 HTML 및 JavaScript로 기본 앱을 작성할 수 있습니다. 또한 DOM에서 Node.js 모듈을 직접 호출 할 수 있으며 모든 웹 기술로 기본 애플리케이션을 작성하는 새로운 방법을 사용할 수 있습니다.

이 지침은 특히 사용자가 실행할 수있는 단일 파일 앱 생성에 대해 자세히 설명하며이 부분 에서는 외부 종속성에 대해 설명합니다.

그것이 정확한 해결책인지 확실하지 않지만 꽤 가깝습니다.

그것이 도움이되기를 바랍니다!


JXcore를 사용하면 모든 nodejs 애플리케이션을 Windows, Linux 또는 Mac OS X의 모든 종속성을 포함하여 단일 실행 파일로 전환 할 수 있습니다.

다음은 설치 프로그램에 대한 링크입니다. https://github.com/jxcore/jxcore-release

다음은 설정 방법에 대한 링크입니다. http://jxcore.com/turn-node-applications-into- executables /

사용하기가 매우 쉽고 Windows 8.1 및 Ubuntu 14.04에서 모두 테스트했습니다.

참고 : JXcore는 NodeJS의 포크이므로 100 % NodeJS와 호환되며 몇 가지 추가 기능이 있습니다.


nexe뿐만 아니라, browserify는 하나의 모든 의존성을 번들로 사용할 수있는 .js파일입니다. 이것은 실제 노드 실행 파일을 묶지 않고 단지 자바 스크립트 측만 처리합니다. 네이티브 모듈도 처리하지 않습니다. 순수 노드 컴파일을위한 명령 행 옵션은 다음과 같습니다 browserify --output bundle.js --bare --dg false input.js.


설치 프로그램을 만들려면 여러 단계를 거쳐야하며 각 운영 체제에 따라 다릅니다. 예를 들어 :


makeself를 사용해 보았고 성공했습니다. 아직 문제가 없습니다. 문서화 된 단계 @ https://www.linkedin.com/pulse/article/deploying-nodejs-single- executableruntime-amit-gupta


You could create a git repo and setup a link to the node git repo as a dependency. Then any user who clones the repo could also install node.

#git submodule [--quiet] add [-b branch] [-f|--force]
git submodule add /var/Node-repo.git common

You could easily package a script up to automatically clone the git repo you have hosted somewhere and "install" from one that one script file.

#!/bin/sh
#clone git repo
git clone your-repo.git

참고URL : https://stackoverflow.com/questions/14314038/how-do-i-deploy-node-js-applications-as-a-single-executable-file

반응형