簡體   English   中英

如何使用zeit / pkg npm軟件包將NodeJs項目打包為可執行文件?

[英]How to package NodeJs project into an executable with zeit/pkg npm package?

我正在嘗試使用https://github.com/zeit/pkg npm軟件包使我的節點應用程序可執行。 我嘗試但無法完全理解給定的文檔,或者我做錯了事。

使用命令“ npm install -g pkg”安裝后,我將入口點放在package.json文件中,如下所示:

"bin": "app.js"

我正在運行此cmnd:

pkg .

之后,我將獲得可以運行的可執行文件。 我嘗試在Windows上運行使用proj_name-win創建的文件,但無法正常工作。 誰能向我解釋使可執行文件的步驟以及我做錯了什么?

我發現這個示例最有幫助(它在package.json中也具有動態引入腳本和資產的功能): https : //github.com/asaf050/loopback-pkg-ready

我發現這些也有幫助: http : //thecodebarbarian.com/standalone-express-apis-binaries-with-pkg https://mrlithium.blogspot.com/2017/11/compiling-nodejs-app-into-exe- using-pkg.html

基本上是“ pkg”。 如果您的package.json設置正確,應該可以正常工作。 請注意,如果不指定“ -t Latest-win-x64”,它將構建所有3個操作系統。 您還可以在運行服務器時指定特定於節點的選項(例如--options Exposure-gc)。 因此,一個軟件包可能看起來像這樣:pkg -t Latest-win-x64。 --options暴露gc

如果僅使用“。”,則該目錄應該是package.json所在的目錄,並且package.json需要具有bin和main條目,就像您指定的一樣。 我不確定為什么需要該垃圾箱,因為它看起來與主要垃圾箱相同。 您也可以在調用pkg時指定主文件,如下所示:pkg -t Latest-win-x64 ./server/server.js --options Exposure-gc

同樣,“ -t”和“ --options”是可選的,您只需要調用“ pkg”即可。 或“ pkg ./app.js”來構建軟件包。

您可以發布收到的錯誤消息嗎? 而不是單擊.exe,而是從命令行調用if以獲取日志,或將其輸出到日志文件。 對我來說,它沒有運行的原因是由於靜態文件和動態模塊加載(在構建中以及運行.exe時指定)。

請添加以下代碼以使用pkg:

package.json

"main": "app.js",
"scripts": {
"start": "npm start"
 },
"bin" : "$DIR\node_modules\npm\cli.js"

然后運行命令pkg。

注意事項

1)您也可以通過以下命令直接打包app.js(以防您沒有其他要添加到pkg中的資產):

pkg app.js

2)它將在您當前的工作目錄中創建可執行文件。

3)您也可以在“ bin”中指定入口點:

范例:

package.json

"main": "app.js",
"scripts": {
"start": "npm start"
 },
"bin" : "./bin/my-bin.js"

bin / my-bin.js

#!/usr/bin/env node

var join = require('path').join
var childProcess = require('child_process');
var args = process.argv.slice(2);

 args.unshift(__dirname + '/../'); 

childProcess.exec('npm start', (err, stdout) => {
if (err) console.log(err);
console.log(stdout);
})

然后,在當前工作目錄中

pkg .

似乎pkg並沒有得到更多維護,我建議研究一下nexe

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM