Mengemas aplikasi Node.js Anda ke dalam satu yang dapat dieksekusi.
Dibutuhkan kurang dari 5 menit untuk mengkompilasi proyek apa pun dengan node-packer .
Anda tidak perlu memodifikasi satu baris kode dalam aplikasi Anda, tidak peduli bagaimana Anda mengembangkannya selama itu bekerja di Node Plain Node.js!
Windows,
MacOS dan
Linuxrequire , termasuk yang dinamis (misalnya require(myPath + 'module.js' )Berikut ini adalah rilis packer node.js stabil terbaru:
| Os | Lengkungan. | Dapat dieksekusi |
|---|---|---|
| Windows | x64 | https://gw.alipayobjects.com/os/enclose-prod/0d0ec8fd-dc9c-4b0a-85df-8bf4af0e8b8d/nodec-v1.5.0-x64.zip |
| MacOS | x64 | https://gw.alipayobjects.com/os/enclose-prod/bc2022ef-4b88-4c12-9980-394945c9c198/nodec-v1.5.0-darwin-x64.gz |
| Linux | x64 | https://gw.alipayobjects.com/os/enclose-prod/b6aa41a6-f6b5-4542-b777-06e4bc292c5e/nodec-v1.5.0-linux-x64.gz |
Setiap kali cabang master CI berhasil, biner pra-pelepasan Node.js Packer akan dihasilkan secara otomatis. Berikut adalah pembangunan pra-rilis terbaru yang tidak stabil:
| Os | Lengkungan. | Dapat dieksekusi |
|---|---|---|
| Windows | x64 | https://github.com/pmq20/node-packer/releases/download/windows-x64/pre-release-nodec-v140800.121803-x64.exe |
| MacOS | x64 | https://github.com/pmq20/node-packer/releases/download/darwin-x64/pre-release-nodec-v140800.121803-darwin-x64 |
| Linux | x64 | https://github.com/pmq20/node-packer/releases/download/linux-x64/pre-release-nodec-v140800.121803-linux-x64 |
Instal pada windowsPertama instal prasyarat:
Kemudian unduh nodec-x64.exe .
Secara opsional, letakkan di bawah C:Windows atau direktori PATH lainnya. Open Visual Studio "X64 Native Tools Command Prompt" dan jalankan nodec --help di dalamnya.
Instal pada macOSPertama instal prasyarat:
brew install squashfsCommand Line Tools melalui XCODE. Anda dapat menemukan ini di bawah menu Xcode -> Preferences -> Downloadsgcc dan toolchain terkait yang make Kemudian unduh nodec-darwin-x64 .
Jalankan chmod +x untuk memberikan izin eksekusi dan mengeksekusi ./nodec --help .
Menurut Travis Build baru -baru ini, kasus uji akan gagal segera setelah peluncurannya terjadi ketika lingkungan build adalah Xcode 11. Saat ini, tidak diketahui apakah masalah ini disebabkan oleh XCODE 11 atau faktor -faktor lain dalam Travis CI yang mungkin tidak berdampak pada penyebaran macOS yang sebenarnya.
Oleh karena itu, lingkungan build untuk macOS di bawah Travis adalah Xcode 10.2 untuk memastikan kasus uji dapat berhasil dieksekusi dan diselesaikan.
Instal di LinuxPertama instal prasyarat:
sudo yum install squashfs-toolssudo apt-get install squashfs-toolsgcc dan g++ 4.9.4 atau lebih baru, atauclang dan clang++ 3.4.2 atau lebih baru Kemudian unduh nodec-linux-x64 .
Jalankan chmod +x untuk memberikan izin eksekusi dan mengeksekusi ./nodec --help .
Diketahui bahwa repo default untuk distro Red Hat dan Centos berisi GCC / G ++ yang sangat ketinggalan zaman (3.8.5) sedangkan dukungan jangka panjang terbaru (LTS) dari Ubuntu pada 15 Februari 2018 (Ubuntu 18.04 LTS) berisi GCC / G ++ (7.3.0) yang relatif diperbarui.
Diketahui bahwa kompilasi dapat gagal saat menggunakan konfigurasi yang tidak didukung di mana versi prasyarat lebih tua dari yang ditentukan.
Oleh karena itu, sangat penting bagi pengguna distro berbasis Red Hat untuk menginstal GCC / G ++ di luar dari repo resmi. Sebagai permulaan, orang mungkin melihat:
Selain itu, binari yang dikompilasi dari Ubuntu 18.04 LTS diketahui tidak bekerja di distro berbasis Red Hat 7 (termasuk CentOS) karena 'glibcxx_3.4.20' tidak ditemukan 'kesalahan terkait. Namun, binari yang disusun dari Red Hat atau Centos 7 diketahui bekerja dengan Ubuntu 18.04 LTS berdasarkan percobaan internal saya.
Setelah mengatakan itu, saya masih akan merekomendasikan bahwa distributor binari harus menyusun 2 versi untuk Linux di mana satu melayani RHEL berbasis dan yang lain untuk berbasis Ubuntu.
Menurut Travis Build baru-baru ini, Linux telah gagal membangun sejak NODEC-1.6.0-10.16.0 (Node.js 10.16.0). Penyebab akar belum ditentukan, dan bangunan bagus terakhir yang diketahui adalah 10.15.3 yang dapat diunduh di sini: https://github.com/slee047/node-packer/releases/tag/1.6.0-10.15.3-1
Masalah ini dapat ditemukan di sini: https://github.com/slee047/node-packer/issues/11
Catatan: File GZ ini (NODEC-DARWIN-X64.GZ) berisi versi usang dari NODEC (NODEC 1.5.0 dengan Node.js 8.3.0). Pemelihara asli tidak menentukan cara membangun repo ini menjadi satu yang dapat dieksekusi, oleh karena itu versi yang lebih baru hanya dapat dijalankan pada kode sumber secara langsung.
nodec [OPTION]... [ENTRANCE]
--current Uses the current Node.js release
--lts Uses the LTS Node.js release
-r, --root=DIR Specifies the path to the root of the application
--output=FILE Specifies the path of the output file
-d, --tmpdir=DIR Specifies the directory for temporary files
--clean-tmpdir Cleans all temporary files that were generated last time
--keep-tmpdir Keeps all temporary files that were generated last time
--make-args=ARGS Passes extra arguments to make
--vcbuild-args=ARGS Passes extra arguments to vcbuild.bat
-n, --npm=FILE Specifies the path of npm
--skip-npm-install Skips the npm install process
--debug Enables debug mode
-o, --dest-os=OS Specifies the destination operating system (enum: win mac solaris freebsd openbsd linux android aix)
-a, --dest-arch=ARCH Specifies the destination CPU architecture (enum: arm arm64 ia32 mips mipsel ppc ppc64 x32 x64 x86 s390 s390x)
--quiet Enables quiet mode
-v, --version Prints the version of nodec and exit
-h, --help Prints this help and exit
CATATAN: Jika pintu masuk tidak disediakan, satu node mentah tunggal.js yang dapat dieksekusi akan diproduksi.
Catatan: Untuk mengkompilasi program kompatibel Windows OS 32-bit pada mesin 64-bit, Anda harus menggunakan lingkungan kompilasi silang x64 x32. Anda harus dapat menemukannya di menu mulai setelah menginstal Visual Studio. Juga, Anda harus menggunakan 32 -bit node.js, karena informasi lengkung terdeteksi melalui node -pe process.arch .
git clone --depth 1 https://github.com/jashkenas/coffeescript.git
cd coffeescript
nodec bin/coffee
./a.out (or a.exe on Windows)
git clone --depth 1 https://github.com/eggjs/examples.git
cd examples/helloworld
npm install
nodec node_modules/egg-bin/bin/egg-bin.js
./a.out dev (or a.exe dev on Windows)
| Proyek | Perbedaan |
|---|---|
| pkg | PKG meretas fs.* API secara dinamis untuk mengakses file in-package, sedangkan Packer Node.js meninggalkannya sendirian dan sebaliknya bekerja pada tingkat yang lebih dalam melalui Libsquash. PKG menggunakan JSON untuk menyimpan file in-package sementara Node.js Packer menggunakan squashfs yang lebih canggih dan banyak digunakan sebagai struktur datanya. |
| Lambang | EncloseJS membatasi akses ke file in-package hanya untuk lima fs.* API, sedangkan Packer Node.js mendukung semua fs.* API. EncloseJS berlisensi dan mengenakan biaya saat digunakan sementara Node.js Packer dilisensikan MIT dan pengguna keduanya bebas menggunakannya dan bebas untuk memodifikasinya. |
| Nexe | NEXE tidak mendukung require dinamis karena penggunaan browserify , sedangkan packer node.js mendukung semua jenis require termasuk require.resolve . |
| Asar | Asar menyimpan arsip kode dan yang dapat dieksekusi terpisah sementara Node.js Packer menautkan semua kode sumber JavaScript bersama dengan mesin virtual Node.js dan menghasilkan satu yang dapat dieksekusi sebagai produk akhir. Asar menggunakan JSON untuk menyimpan informasi file saat Node.js Packer menggunakan squashfs. |
| AppImage | AppImage hanya mendukung Linux dengan kernel yang mendukung squashfs, sementara Node.js Packer mendukung ketiga platform Linux, MacOS dan Windows, sementara itu tanpa persyaratan fitur khusus dari kernel. |
nodec juga mendukung kompilasi silang. Karena Node.js dibangun dari sumber, Anda perlu mengatur dengan benar alat untuk mendapatkan kompiler yang valid untuk menghasilkan binari untuk platform tujuan.
Anda dapat dengan mudah melakukan ini dengan menggunakan crosstool-ng atau alat lain yang Anda sukai.
Setelah selesai dengan build dari toolchain yang valid (jangan lupa untuk mengaktifkan C ++ jika Anda menggunakan crosstool-ng yang secara default mengecualikannya) Anda akan dapat dikompilasi dengan benar. Cukup atur lingkungan Anda sehingga ia akan tahu untuk menggunakan toolchain lintas-kompil Anda daripada alat pembuatan default sistem Anda.
Contoh (Anda mungkin perlu menyesuaikan nilai atau menentukan variabel tambahan):
export AR="x86_64-unknown-linux-gnu-ar"
export CC="x86_64-unknown-linux-gnu-gcc"
export CXX="x86_64-unknown-linux-gnu-g++"
export LINK="x86_64-unknown-linux-gnu-g++"
export CPP="x86_64-unknown-linux-gnu-gcc -E"
export LD="x86_64-unknown-linux-gnu-ld"
export AS="x86_64-unknown-linux-gnu-as"
export CCLD="ax86_64-unknown-linux-gnu-gcc ${TARGET_ARCH}"
export NM="x86_64-unknown-linux-gnu-nm"
export STRIP="x86_64-unknown-linux-gnu-strip"
export OBJCOPY="x86_64-unknown-linux-gnu-objcopy"
export RANLIB="x86_64-unknown-linux-gnu-ranlib"
export F77="x86_64-unknown-linux-gnu-g77 ${TARGET_ARCH}"
unset LIBC
#Define flags
#export CXXFLAGS="-march=armv7-a"
export LDFLAGS="-L${CSTOOLS_LIB} -Wl,-rpath-link,${CSTOOLS_LIB} -Wl,-O1 -Wl,--hash-style=gnu"
export CFLAGS="-isystem${CSTOOLS_INC} -fexpensive-optimizations -frename-registers -fomit-frame-pointer -O2 -ggdb3"
export CPPFLAGS="-isystem${CSTOOLS_INC}"
# export CCFLAGS="-march=armv7-a"
#Tools
export CSTOOLS=/Volumes/crosstools/x86_64-unknown-linux-gnu
export CSTOOLS_INC=${CSTOOLS}/include
export CSTOOLS_LIB=${CSTOOLS}/lib
#export ARM_TARGET_LIB=$CSTOOLS_LIB
# export GYP_DEFINES="armv7=1"
#Define other things, those are not 'must' to have defined but we added
export SHELL="/bin/bash"
export TERM="screen"
export LANG="en_US.UTF-8"
export MAKE="make"
#Export the path for your system
#export HOME="/home/gioyik" #Change this one with the name of your user directory
export PATH=${CSTOOLS}/bin:/usr/arm-linux-gnueabi/bin/:$PATH
Minqi Pan et al.
Mit