บรรจุแอปพลิเคชัน Node.js ของคุณลงในที่เรียกใช้งานเดียว
ใช้เวลาน้อยกว่า 5 นาทีในการรวบรวมโครงการใด ๆ ด้วย node-packer
คุณไม่จำเป็นต้องปรับเปลี่ยนรหัสบรรทัดเดียวในแอปพลิเคชันของคุณไม่ว่าคุณจะพัฒนาได้อย่างไรตราบเท่าที่มันทำงานใน Node.js ธรรมดา!
หน้าต่าง
macos และ
ลินเวกซ์require รวมถึงรูปแบบไดนามิก (เช่น require(myPath + 'module.js' )นี่คือการเปิดตัว Packer Node.js ที่เสถียรล่าสุด:
| ระบบปฏิบัติการ | โค้ง. | ที่ปฏิบัติการได้ |
|---|---|---|
| หน้าต่าง | x64 | https://gw.alipayobjects.com/os/enclose-prod/0d0ec8fd-dc9c-4b0a-85df-8bf4af0e8b8d/nodec-v1.5.0-x64.zip |
| แม็กอส | x64 | https://gw.alipayobjects.com/os/enclose-prod/BC20222F-4B88-4C12-9980-394945C9C198/NODEC-V1.5.0-DARWIN-X64.GZ |
| ลินเวกซ์ | x64 | https://gw.alipayobjects.com/os/enclose-prod/b6aa41a6-f6b5-4542-b777-06e4bc292c5e/nodec-v1.5.0-linux-x64.gz |
เมื่อใดก็ตามที่สาขา master CI ประสบความสำเร็จ Node.js Packer Binary Pre-Release Binary จะถูกสร้างขึ้นโดยอัตโนมัติ นี่คือการสร้างก่อนการเปิดตัวที่ไม่เสถียรล่าสุด:
| ระบบปฏิบัติการ | โค้ง. | ที่ปฏิบัติการได้ |
|---|---|---|
| หน้าต่าง | x64 | https://github.com/pmq20/node-packer/releases/download/windows-x64/pre-release-nodec-v140800.121803-x64.exe |
| แม็กอส | x64 | https://github.com/pmq20/node-packer/releases/download/darwin-x64/pre-release-nodec-v140800.121803-darwin-x64 |
| ลินเวกซ์ | x64 | https://github.com/pmq20/node-packer/releases/download/linux-x64/pre-release-nodec-v140800.121803-linux-x64 |
ติดตั้งบน Windowsก่อนอื่นติดตั้งข้อกำหนดเบื้องต้น:
จากนั้นดาวน์โหลด nodec-x64.exe
เป็นทางเลือกใส่ไว้ภายใต้ C:Windows หรือไดเรกทอรี PATH อื่น ๆ เปิด "x64 Native Tools Command Prompt" ของ Visual Studio และดำเนินการ nodec --help ในนั้น
ติดตั้งบน macOSก่อนอื่นติดตั้งข้อกำหนดเบื้องต้น:
brew install squashfsCommand Line Tools ผ่าน XCODE คุณสามารถค้นหาสิ่งนี้ได้ภายใต้เมนู Xcode -> Preferences -> Downloadsgcc และ make ที่เกี่ยวข้อง จากนั้นดาวน์โหลด nodec-darwin-x64
เรียกใช้ chmod +x เพื่อให้สิทธิ์ในการดำเนินการและดำเนินการ ./nodec --help
จากการสร้าง Travis เมื่อเร็ว ๆ นี้กรณีทดสอบจะล้มเหลวในไม่ช้าหลังจากการเปิดตัวเกิดขึ้นเมื่อสภาพแวดล้อมการสร้างคือ XCode 11 ปัจจุบันยังไม่ทราบว่าปัญหาเกิดจาก XCode 11 หรือปัจจัยอื่น ๆ ภายใน Travis CI ซึ่งอาจไม่ส่งผลกระทบต่อการปรับใช้ MACOS จริง
ดังนั้นสภาพแวดล้อมการสร้างสำหรับ macOS ภายใต้เทรวิสคือ XCode 10.2 เพื่อให้แน่ใจว่ากรณีทดสอบสามารถดำเนินการและเสร็จสิ้นได้สำเร็จ
ติดตั้งบน Linuxก่อนอื่นติดตั้งข้อกำหนดเบื้องต้น:
sudo yum install squashfs-toolssudo apt-get install squashfs-toolsgcc และ g++ 4.9.4 หรือใหม่กว่าหรือclang and clang++ 3.4.2 หรือใหม่กว่า จากนั้นดาวน์โหลด nodec-linux-x64
เรียกใช้ chmod +x เพื่อให้สิทธิ์ในการดำเนินการและดำเนินการ ./nodec --help
เป็นที่ทราบกันดีว่า repo เริ่มต้นสำหรับ Red Hat และ Centos distros มี GCC / G ++ ที่ล้าสมัยมาก (3.8.5) ในขณะที่การสนับสนุนระยะยาวล่าสุด (LTS) ของ Ubuntu ณ วันที่ 15 ก.พ. 2018 (Ubuntu 18.04 LTS) มี GCC / G ++ (7.3)
เป็นที่ทราบกันดีว่าการรวบรวมอาจล้มเหลวเมื่อใช้การกำหนดค่าที่ไม่ได้รับการสนับสนุนซึ่งเวอร์ชันของข้อกำหนดเบื้องต้นนั้นเก่ากว่าที่กำหนด
ดังนั้นจึงเป็นสิ่งสำคัญสำหรับผู้ใช้ distros ที่ใช้ Red Hat เพื่อติดตั้ง GCC / G ++ นอก repos อย่างเป็นทางการ สำหรับผู้เริ่มต้นอาจดู:
นอกจากนี้ไบนารีที่รวบรวมจาก Ubuntu 18.04 LTS เป็นที่รู้จักกันว่าไม่ทำงานใน Red Hat 7 Distro (รวมถึง CentOs) เนื่องจาก 'GLIBCXX_3.4.20' ไม่พบ 'ข้อผิดพลาดที่เกี่ยวข้อง อย่างไรก็ตามไบนารีที่รวบรวมจาก Red Hat หรือ Centos 7 เป็นที่รู้จักกันว่าทำงานร่วมกับ Ubuntu 18.04 LTS ตามการทดลองภายในของฉัน
ต้องบอกว่าฉันจะยังคงแนะนำว่าผู้จัดจำหน่ายไบนารีควรรวบรวม 2 เวอร์ชันสำหรับ Linux ที่หนึ่งเหมาะสำหรับ Rhel และอีกรุ่นหนึ่งสำหรับ Ubuntu
จากการสร้าง Travis ล่าสุด Linux ไม่สามารถสร้างได้ตั้งแต่ NODEC-1.6.0-10.16.0 (node.js 10.16.0) สาเหตุที่แท้จริงยังไม่ได้รับการพิจารณาและการสร้างที่ดีล่าสุดที่รู้จักคือ 10.15.3 ซึ่งสามารถดาวน์โหลดได้ที่นี่: https://github.com/slee047/node-packer/releases/tag/1.6.0-10.15.3-1
ปัญหาสามารถพบได้ที่นี่: https://github.com/slee047/node-packer/issues/11
หมายเหตุ: ไฟล์ GZ นี้ (NODEC-DARWIN-X64.GZ) มีเวอร์ชันที่ล้าสมัยของ NODEC (NODEC 1.5.0 พร้อม node.js 8.3.0) ผู้ดูแลต้นฉบับไม่ได้ระบุวิธีการสร้าง repo นี้ลงในการเรียกใช้งานเดียวดังนั้นรุ่นใหม่สามารถเรียกใช้บนซอร์สโค้ดได้โดยตรงเท่านั้น
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
หมายเหตุ: หากไม่ได้ให้ทางเข้าโหนดดิบเดียวที่สามารถดำเนินการได้
หมายเหตุ: ในการรวบรวมโปรแกรมที่เข้ากันได้กับ Windows OS 32 บิตบนเครื่อง 64 บิตคุณควรใช้สภาพแวดล้อมการรวบรวม X64 X32 Cross คุณควรจะสามารถค้นหาได้ในเมนูเริ่มต้นของคุณหลังจากติดตั้ง Visual Studio นอกจากนี้คุณต้องใช้ Node.js 32 บิตเนื่องจากข้อมูลส่วนโค้งถูกตรวจพบผ่าน 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)
| โครงการ | ความแตกต่าง |
|---|---|
| PKG | PKG แฮ็ค fs.* API ของแบบไดนามิกเพื่อเข้าถึงไฟล์ในแพคเกจในขณะที่ Node.js Packer ปล่อยให้พวกเขาอยู่คนเดียวและทำงานในระดับที่ลึกกว่าผ่าน Libsquash PKG ใช้ JSON เพื่อจัดเก็บไฟล์ในแพคเกจในขณะที่ Node.js Packer ใช้ squashfs ที่ซับซ้อนและใช้กันอย่างแพร่หลายมากขึ้นเป็นโครงสร้างข้อมูล |
| enclosejs | Enclosejs จำกัด การเข้าถึงไฟล์ในแพคเกจไว้ที่เพียงห้า fs.* API's ในขณะที่ Node.js Packer รองรับ fs.* API's Enclosejs เป็นใบอนุญาตที่ได้รับใบอนุญาตและเรียกเก็บเงินเมื่อใช้ในขณะที่ใช้ในขณะที่ Node.js Packer ได้รับอนุญาตจาก MIT และผู้ใช้มีอิสระที่จะใช้งานและแก้ไขได้ฟรี |
| Nexe | NEXE ไม่รองรับ require แบบไดนามิกเนื่องจากการใช้ browserify ในขณะที่ Node.js Packer รองรับ require ทุกประเภทรวมถึง require.resolve |
| asar | ASAR เก็บรหัสเก็บถาวรและแยกกันได้ในขณะที่ Packer Node.js เชื่อมโยงซอร์สโค้ด JavaScript ทั้งหมดพร้อมกับเครื่องเสมือน Node.js และสร้างการเรียกใช้งานเดียวเป็นผลิตภัณฑ์สุดท้าย ASAR ใช้ JSON เพื่อจัดเก็บข้อมูลของไฟล์ในขณะที่ Node.js Packer ใช้ Squashfs |
| การใช้งาน | AppImage รองรับเพียง Linux ด้วยเคอร์เนลที่รองรับ Squashfs ในขณะที่ Node.js Packer รองรับทั้งสามแพลตฟอร์มของ Linux, MacOS และ Windows ในขณะที่ไม่มีข้อกำหนดคุณสมบัติพิเศษใด ๆ จากเคอร์เนล |
nodec ยังรองรับการคอมไพล์ข้าม เนื่องจาก Node.js ถูกสร้างขึ้นจากแหล่งที่มาคุณจะต้องติดตั้งเครื่องมืออย่างถูกต้องเพื่อให้ได้คอมไพเลอร์ที่ถูกต้องเพื่อสร้างไบนารีสำหรับแพลตฟอร์มปลายทาง
คุณสามารถทำได้อย่างง่ายดายด้วยการใช้ Crosstool-NG หรือเครื่องมืออื่น ๆ ที่คุณชอบ
เมื่อเสร็จสิ้นการสร้างเครื่องมือเครื่องมือที่ถูกต้อง (อย่าลืมเปิดใช้งาน C ++ หากคุณใช้ crosstool-NG ซึ่งโดยค่าเริ่มต้นไม่รวมอยู่) คุณจะสามารถรวบรวมได้อย่างถูกต้อง เพียงแค่ตั้งค่าสภาพแวดล้อมของคุณเพื่อที่จะรู้ว่าใช้เครื่องมือข้ามการคอมไพล์ของคุณมากกว่าเครื่องมือสร้างเริ่มต้นของระบบของคุณ
ตัวอย่าง (คุณอาจต้องปรับค่าหรือระบุตัวแปรเพิ่มเติม):
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 และคณะ
มิกซ์