node.js 앱에서 exe 파일을 만드는 방법은 무엇입니까?

내가 작성한 노드 앱이 있으며 다음과 같이 실행됩니다.

node.exe app.js inputArg

이것을 .exe로 패키징 할 수있는 방법이 있습니까? 그래서 그냥 이렇게 할 수 있나요?

App.exe inputArg

배치 파일을 사용하여이를 속일 수있는 방법이 있으므로 다음과 같이 할 수 있습니다.

App.bat inputArg

그러나이를 위해서는 해당 폴더에 모든 종속성과 노드가 있어야하며 이는 이상적이지 않습니다.



답변

무료 및 상업적인 몇 가지 대안이 있습니다. 나는 그들 중 어느 것도 사용하지 않았지만 이론적으로는 작동해야합니다.

대부분의 경우 배치 파일을 기본 실행 파일로 유지 한 다음 node.exe와 스크립트를 번들링해야합니다.

스크립트에 따라 실행 파일을 생성 하는 쉬운 방법을 지원하는 JSDB 로 이식하는 옵션도 있습니다. 리소스를 추가 .

세 번째 준 해결책은 노드를 같은 곳에 유지 C:\utils하고이 폴더를 PATH환경 변수에 추가하는 것 입니다. 그런 다음 노드 + 선호하는 스크립트를 실행하는 해당 디렉토리에 .bat 파일을 만들 수 있습니다 coffee.이 방법으로 coffeescript가 Windows에서 작동합니다. 이 설정은 배치 파일, vb 스크립트 또는 설치 프로그램을 사용하여 자동화 할 수 있습니다.


답변

제가 사용한 솔루션은 Roger Wang의 node-webkit입니다. 입니다.

이는 nodejs 앱을 패키징하고 배포하는 환상적인 방법이며 전체 앱을 단일 실행 파일로 “번들”하는 옵션도 제공합니다. Windows, Mac 및 Linux를 지원합니다.

다음 은 node-webkit 앱을 배포하기위한 다양한 옵션에 대한 몇 가지 문서이지만 간단히 말해서 다음을 수행합니다.

  1. 루트에 package.json을 사용하여 모든 파일을 압축합니다.
  2. 확장자를 .zip에서 .nw로 변경합니다.
  3. 복사 / b nw.exe + app.nw app.exe

추가 된 메모처럼-나는 이것을 사용하여 여러 생산 상자 / 설치 CD 응용 프로그램을 출하했으며 훌륭하게 작동했습니다. 동일한 앱이 Windows, Mac, Linux 및 웹에서 실행됩니다.

업데이트 : 프로젝트 이름이 ‘nw.js’로 변경되었으며 여기에 올바르게 위치합니다 : nw.js


답변

이 질문에 걸림돌이되는 사람에게는 이제 노드 프로젝트에서 exe를 생성하는 두 개의 프로젝트 인 PkgElectron.atom.io가 있지만 약간 다릅니다.

  1. Pkg 는 프로젝트를 네이티브 코드로 컴파일하고 자산과 nodejs 설치도 포함합니다 (시스템은 .exe를 실행하기 위해 nodejs를 설치할 필요가 없습니다). 소스 코드는 포함되지 않습니다. 결과 실행 파일은 Windows 전용 (.exe)입니다. 이제 모든 플랫폼이 지원됩니다. 이제 상용 제품에 대한 라이센스가 필요합니다. 완전 오픈 소스.
  2. Electron.atom.io 는 압축되지 않고 .exe를 생성하지만, nodejs 앱은 애플리케이션 배포 방법을 제공하므로 배포하는 데 사용할 수 있습니다 . 장점은 electron이 다중 플랫폼 (windows, mac osx, linux)이고 단점은 소스 코드가 포함된다는 것입니다. 심지어 asar 아카이브 내에서 앱을 배포 할 수있는 방법을 제공하기는 어렵습니다 . 방탄은 아니지만 평범한 소스보다 여전히 낫습니다.

답변

기본적으로 Windows는 .js파일을 Microsoft의 독립 실행 형 JS 런타임 엔진 인 Windows Script Host 와 연결 합니다 . 명령 프롬프트에서 script.js 를 입력 하거나 .js탐색기 에서 파일을 두 번 클릭 하면 스크립트가 wscript.exe.

이것은 전역 설정으로 로컬 문제를 해결할 수 있지만 대신 파일을 연결 하여 script.js 를 입력 할 수 있습니다..jsnode.exe 명령 프롬프트에서 하거나 스크립트에 항목을 두 번 클릭 / 드래그하면 와 함께 시작됩니다.

물론, 저처럼 .js파일을 편집기와 연결하여 파일을 두 번 클릭하면 좋아하는 텍스트 편집기가 열리면이 제안은 별 효과가 없습니다. “노드로 실행” 의 마우스 오른쪽 버튼 클릭 메뉴 항목.js파일에 추가 할 수도 있지만이 대안은 명령 줄 요구 사항을 해결하지 못합니다.


가장 간단한 해결책은 아마도 배치 파일을 사용하는 것입니다. 스크립트가있는 폴더에 Node의 복사본이있을 필요는 없습니다. Node 실행 파일을 절대적으로 참조하십시오.

"C:\Program Files (x86)\nodejs\node.exe" app.js %*

또 다른 대안은 .js실행할 스크립트로 자체 파일 이름 + 를 사용하여 Node를 시작 하고 모든 명령 줄 인수를 전달 하는 매우 간단한 C # 앱입니다 .

class Program
{
    static void Main(string[] args)
    {
        var info = System.Diagnostics.Process.GetCurrentProcess();
        var proc = new System.Diagnostics.ProcessStartInfo(@"C:\Program Files (x86)\nodejs\node.exe", "\"" + info.ProcessName + ".js\" " + String.Join(" ", args));
        proc.UseShellExecute = false;
        System.Diagnostics.Process.Start(proc);
    }
}

따라서 결과 EXE의 이름을 “app.exe”로 지정하면 입력 할 수 app arg1 ...있으며 Node는 명령 줄로 시작됩니다 "app.js" arg1 .... C # 부트 스트 래퍼 앱은 즉시 종료되고 Node는 콘솔 창을 담당합니다.

이것은 아마도 상대적으로 많은 관심을 가질 것이기 때문에 , 낯선 사람과 함께 밴에 타는 것이 당신의 일이라면 컴파일 된 exe를 포함하여 이것을 GitHub 에서 사용할 수 있도록했습니다 .


답변

내가 아는 최고의 도구는 NodeJS 도구입니다. zeit / pkg

사용하기가 매우 쉽고 (예를 들어 Nexe보다 훨씬 더 많음) 전역 적으로 설치할 수 있습니다.
npm install -g pkg

macOS, Linux 및 Windows 용 실행 파일을 만들려면 :

pkg exampleApp.js

나는 NodeJS 소켓 서버를 사용하는 약간의 복잡한 코드를 가지고 있었고 다른 응용 프로그램을 시도했지만 zeit / pkg를 제외하고는 제대로 만들지 못했습니다 .


답변

시도하지 않았지만 nexe는 nexe가 이것을 할 수있는 것처럼 보입니다.

https://github.com/crcn/nexe


답변

이 질문에 대한 답변을받은 이후 다른 솔루션이 출시되었습니다.

https://github.com/appjs/appjs

이 글을 쓰는 시점에서 이것은 실행 파일로 컴파일 된 제거 된 크롬 패키지를 통해 node.js 앱을 패키징하는 최종 솔루션입니다.

편집 : AppJS는 더 이상 활성화되지 않지만 자체적으로 deskshell이라는 포크를 제안합니다.

https://github.com/sihorton/appjs-deskshell/