Saya memiliki aplikasi node yang saya tulis, yang saya jalankan sebagai berikut:
node.exe app.js inputArg
Apakah ada cara agar saya dapat memaketkannya menjadi .exe dengan sendirinya? Jadi saya bisa melakukan sesuatu seperti ini?
App.exe inputArg
Saya punya beberapa cara untuk memalsukan ini dengan menggunakan file batch, jadi saya bisa melakukan ini:
App.bat inputArg
Tetapi ini mengharuskan saya memiliki semua dependensi dan node di folder itu, yang tidak ideal.
javascript
windows
node.js
exe
Aishwar
sumber
sumber
Jawaban:
Ada beberapa alternatif, gratis dan komersial. Saya belum pernah menggunakan salah satu dari mereka tetapi secara teori mereka harus bekerja:
Sebagian besar akan meminta Anda untuk menyimpan file batch sebagai file utama yang dapat dieksekusi, dan kemudian menggabungkan node.exe dan skrip Anda.
Bergantung pada skrip Anda, Anda juga memiliki opsi untuk mem- port-nya ke JSDB , yang mendukung cara mudah untuk membuat file yang dapat dieksekusi hanya dengan menambahkan sumber daya ke dalamnya.
Solusi kuasi ketiga adalah menyimpan node di suatu tempat seperti
C:\utils
dan menambahkan folder ini kePATH
variabel lingkungan Anda . Kemudian Anda dapat membuat file .bat di direktori itu yang menjalankan node + skrip pilihan Anda - Saya mendapat coffeescript yangcoffee
bekerja di windows dengan cara ini. Setup ini dapat diotomatiskan dengan file batch, vb script atau installer.sumber
Solusi yang saya gunakan adalah node-webkit Roger Wang .
Ini adalah cara yang fantastis untuk mengemas aplikasi nodejs dan mendistribusikannya, bahkan memberi Anda opsi untuk "memaketkan" seluruh aplikasi sebagai satu yang dapat dieksekusi. Ini mendukung windows, mac dan linux.
Berikut adalah beberapa dokumen tentang berbagai opsi untuk menerapkan aplikasi node-webkit, tetapi secara singkat, Anda melakukan hal berikut:
Hanya sebagai catatan tambahan - Saya telah mengirimkan beberapa kotak produksi / menginstal aplikasi cd menggunakan ini, dan ini bekerja dengan baik. Aplikasi yang sama berjalan di windows, mac, linux, dan melalui web.
Pembaruan: nama proyek telah berubah menjadi 'nw.js' dan ditempatkan dengan benar di sini: nw.js
sumber
Bagi siapa pun yang tersandung pada pertanyaan ini, sekarang ada dua proyek yang membuat exe dari proyek node Anda, Pkg dan Electron.atom.io , mereka sedikit berbeda:
Eksekusi yang dihasilkan adalah HANYA Windows (.exe).Semua platform didukung sekarang.Sekarang membutuhkan lisensi untuk produk komersial.Sepenuhnya open source.sumber
Secara default, Windows mengasosiasikan
.js
file dengan Windows Script Host , mesin runtime JS mandiri Microsoft. Jika Anda mengetik script.js pada prompt perintah (atau mengklik dua kali.js
file di Explorer), skrip akan dijalankan olehwscript.exe
.Ini mungkin memecahkan masalah lokal dengan pengaturan global , tetapi Anda dapat mengasosiasikan
.js
file dengannode.exe
sebagai gantinya, sehingga mengetik script.js pada prompt perintah atau mengklik dua kali / menyeret item ke skrip akan meluncurkannya dengan Node.Tentu saja, jika — seperti saya — Anda telah mengaitkan
.js
file dengan editor sehingga mengklik dua kali file tersebut membuka editor teks favorit Anda, saran ini tidak akan banyak membantu. Anda juga dapat menambahkan entri menu klik kanan dari "Execute with Node" ke.js
file, meskipun alternatif ini tidak menyelesaikan kebutuhan baris perintah Anda.Solusi paling sederhana mungkin dengan hanya menggunakan file batch - Anda tidak perlu memiliki salinan Node di folder tempat skrip Anda berada. Cukup referensikan Node yang dapat dieksekusi sepenuhnya:
Alternatif lain adalah aplikasi C # yang sangat sederhana ini yang akan memulai Node menggunakan nama filenya sendiri +
.js
sebagai skrip untuk dijalankan, dan meneruskan argumen baris perintah apa pun.Jadi jika Anda memberi nama EXE yang dihasilkan "app.exe", Anda dapat mengetik
app arg1 ...
dan Node akan dimulai dengan baris perintah"app.js" arg1 ...
. Perhatikan aplikasi bootstrapper C # akan segera keluar, meninggalkan Node yang bertanggung jawab atas jendela konsol.Karena ini mungkin minat yang relatif luas, saya melanjutkan dan membuatnya tersedia di GitHub , termasuk exe yang dikompilasi jika masuk ke van dengan orang asing adalah hal Anda.
sumber
Alat terbaik yang saya tahu adalah alat NodeJS : zeit / pkg
Sangat mudah digunakan (lebih dari Nexe, hanya sebagai contoh), Anda dapat menginstalnya secara global:
npm install -g pkg
untuk membuat file yang dapat dieksekusi untuk macOS, Linux dan Windows:
pkg exampleApp.js
Saya memiliki sedikit kode rumit yang menggunakan server soket NodeJS, saya mencoba aplikasi yang berbeda, tidak ada yang membuatnya dengan benar, kecuali zeit / pkg .
sumber
Belum mencobanya, tetapi nexe sepertinya nexe dapat melakukan ini:
https://github.com/crcn/nexe
sumber
Karena pertanyaan ini telah dijawab, solusi lain telah diluncurkan.
https://github.com/appjs/appjs
Pada saat penulisan ini, ini adalah solusi akhir semua untuk aplikasi node.js pengemasan melalui paket chromium dipreteli yang dikompilasi menjadi executable.
Sunting: AppJS tidak lagi aktif, tetapi itu sendiri menyarankan garpu yang disebut deskshell.
https://github.com/sihorton/appjs-deskshell/
sumber
Ada banyak jawaban bagus di sini, tapi tidak semudah JXcore .
Setelah Anda menginstal JXcore di windows, yang harus Anda lakukan adalah menjalankan:
Ini akan menghasilkan file .exe yang dapat Anda distribusikan dan dapat dijalankan tanpa dependensi eksternal apa pun (Anda bahkan tidak membutuhkan JXcore atau Node.js pada sistem).
Berikut dokumentasi tentang fungsionalitas itu: http://jxcore.com/packaging-code-protection/#cat-74
Sunting 2018
Proyek itu sekarang sudah mati tetapi masih dihosting di sini: https://github.com/jxcore/jxcore-release (terima kasih @Elmue)
sumber
Cobadisclose
: https://github.com/pmq20/disclosedisclose
pada dasarnya membuat exe self-extracting dari proyek Node.js Anda dan interpreter Node.js dengan karakteristik berikut,Tidak ada GUI. CLI murni.Tidak ada ketergantungan run-timeMendukung Windows dan UnixBerjalan lambat untuk pertama kalinya (mengekstrak ke dir cache), lalu berpuasa selamanyaCoba
node-compiler
: https://github.com/pmq20/node-compilerSaya telah membuat proyek baru yang dipanggil
node-compiler
untuk mengkompilasi proyek Node.js Anda menjadi satu yang dapat dieksekusi.Itu lebih baik dari
disclose
tidak pernah berjalan lambat untuk pertama kalinya, karena kode sumber Anda dikompilasi bersama dengan interpreter Node.js, sama seperti pustaka Node.js standar.Selain itu, ini mengalihkan permintaan file dan direktori secara transparan ke memori alih-alih ke sistem file saat runtime. Sehingga tidak diperlukan kode sumber untuk menjalankan produk yang dikompilasi.
Cara kerjanya: https://speakerdeck.com/pmq20/node-dot-js-compiler-compiling-your-node-dot-js-application-into-a-single-executable
Membandingkan dengan Proyek Sejenis,
pkg ( https://github.com/zeit/pkg ): Pkg diretas fs. * API secara dinamis untuk mengakses file dalam paket, sedangkan Node.js Compiler membiarkannya dan bekerja pada level yang lebih dalam melalui libsquash. Pkg menggunakan JSON untuk menyimpan file dalam paket sementara Node.js Compiler menggunakan SquashFS yang lebih canggih dan banyak digunakan sebagai struktur datanya.
EncloseJS ( http://enclosejs.com/ ): EncloseJS membatasi akses ke file dalam paket hanya untuk lima fs. * API, sedangkan Node.js Compiler mendukung semua fs. * API. EncloseJS adalah lisensi kepemilikan dan mengenakan biaya ketika digunakan sementara Node.js Compiler berlisensi MIT dan pengguna bebas untuk menggunakannya dan bebas untuk memodifikasinya.
Nexe ( https://github.com/nexe/nexe ): Nexe tidak mendukung kebutuhan dinamis karena penggunaan browserify, sedangkan Node.js Compiler mendukung semua jenis kebutuhan termasuk require.resolve.
asar ( https://github.com/electron/asar ): Asar menggunakan JSON untuk menyimpan informasi file sementara Node.js Compiler menggunakan SquashFS. Asar menyimpan arsip kode dan executable terpisah sementara Node.js Compiler menautkan semua kode sumber JavaScript bersama dengan mesin virtual Node.js dan menghasilkan satu yang dapat dieksekusi sebagai produk akhir.
AppImage ( http://appimage.org/ ): AppImage hanya mendukung Linux dengan kernel yang mendukung SquashFS, sedangkan Node.js Compiler mendukung ketiga platform Linux, macOS dan Windows, sementara itu tanpa persyaratan fitur khusus dari kernel.
sumber
Saya merekomendasikan Anda BoxedApp untuk itu. Ini adalah produk komersial yang bekerja dengan sangat baik. Ini berfungsi untuk aplikasi NodeJS apa pun. Pengguna akhir hanya akan mendapatkan satu file EXE untuk aplikasi Anda. Tidak perlu instalasi.
Di Electron, misalnya, pengguna akhir perlu menginstal / membuka kompresi aplikasi Anda, dan dia akan melihat semua file sumber kode Anda.
BoxedApp Ini mengemas semua file dan dependensi yang dibutuhkan aplikasi NodeJS Anda. Ini mendukung kompresi, dan file yang dikompilasi berfungsi pada Windows XP +
Saat Anda menggunakannya, pastikan untuk menambahkan Node.EXE ke aplikasi yang dikompilasi. Pilih versi node yang mendukung Windows XP (Jika Anda membutuhkan ini)
Program ini mendukung argumen baris perintah, Jadi setelah paket, Anda bisa melakukannya
Dan Anda bisa mendapatkan argumen dalam kode node Anda:
Terkadang aplikasi Anda memiliki dependensi file, jadi di BoxedApp Anda dapat menambahkan folder dan file apa pun sebagai dependensi, misalnya, Anda dapat memasukkan file pengaturan.
Info lebih lanjut:
sumber
Saya menemukan salah satu solusi ini memenuhi persyaratan saya, jadi buatlah versi node saya sendiri yang disebut node2exe yang melakukan ini. Ini tersedia dari https://github.com/areve/node2exe
sumber
Saya telah menjelajahi topik ini selama beberapa hari dan inilah yang saya temukan. Opsi terbagi dalam dua kategori:
Jika Anda ingin membangun aplikasi desktop, opsi terbaiknya adalah:
Berikut adalah perbandingan yang bagus di antara mereka: NW.js & Electron Compared . Menurut saya NW.js lebih baik dan juga menyediakan aplikasi untuk mengkompilasi file JS. Ada juga beberapa pembuat yang dapat dijalankan dan penginstal mandiri seperti Enigma Virtual Box . Keduanya berisi versi Chrome tertanam yang tidak diperlukan untuk aplikasi server.
jika Anda ingin mengemas aplikasi server, ini adalah opsi terbaik:
Dalam kategori ini, saya percaya node-compiler lebih baik yang mendukung kebutuhan dinamis dan modul node asli. Sangat mudah digunakan dan keluarannya dimulai dari 25MB. Anda dapat membaca perbandingan lengkap dengan solusi lain di halaman Node Compiler. Saya tidak banyak membaca tentang Nexe, tetapi untuk saat ini, tampaknya Node Compiler tidak mengkompilasi file js ke format biner menggunakan fitur snapshot V8 tetapi direncanakan untuk versi 2. Ini juga akan memiliki built-in installer builder.
sumber
Electron
tidak dibenarkan untuk menjadi saran yang valid untuk masalah OP; ini adalah kerangka kerja Node yang berbeda.Coba nexe yang membuat satu file yang dapat dieksekusi dari aplikasi node.js Anda
https://github.com/nexe/nexe
sumber
Bosan memulai menang dari command prompt lalu saya berlari melintasi ini juga. Ver. atas apa josh3736 . Ini menggunakan file XML untuk mengambil beberapa pengaturan. Misalnya jalur ke
Node.exe
serta file untuk memulai di app.js. default Juga lingkungan yang akan dimuat (produksi, dev, dll.) Yang telah Anda tentukan di app.js (atau server.js atau apa pun namanya). Pada dasarnya ini menambahkan diNODE_ENV={0}
mana {0} adalah nama konfigurasi Anda di app.js sebagai var untuk Anda. Anda melakukan ini dengan memodifikasi elemen "mode" di config.xml. Anda dapat mengambil proyek di sini ==> direktori github . Catatan dalam acara Post Build, Anda dapat mengubah jalur salin untuk menyalin otomatis ke config.xml dan file yang dapat dieksekusi keNodejs
, hanya untuk menyimpan satu langkah. Jika tidak, edit ini atau build Anda akan memberi peringatan.sumber
Mungkin ada banyak opsi lain tetapi sepengetahuan saya, ada satu proyek dalam pengembangan aktif di GitHub https://github.com/zeit/pkg . Anda bisa bermain dengannya. Satu lagi di https://github.com/nexe/nexe tetapi tidak dalam pengembangan aktif.
sumber
Ada proyek alat membangun sumber terbuka yang disebut nodebob . Saya berasumsi bahwa jendela platform kerja,
Anda akan menemukan file yang dapat dieksekusi di dalam folder rilis.
sumber