將NodeJS項目打包,編譯成跨平台的可執行文件


引言

我們都知道nodejs的項目本身是沒辦法編譯成二進制可執行文件的,這給我們很多的業務場景造成了一些問題,比如要給客戶演示程序的時候,可能還得安裝node環境,然后在安裝一堆的依賴包,這還必須是網絡環境較好的情況下,而有時候,一般企業如果安全看的特別重,限制在局域網內訪問互聯網,那么連包都沒辦法安裝,顯然對於你和對於客戶都是不友好的情景。

還有一種情況:如果我們演示項目時,把代碼交給對方部署,我們自己也不放心啊:Nodejs代碼是明文JS代碼,代碼泄露怎么辦?當然,防代碼泄露可以用JShaman平台對JS代碼進行混淆加密。

pkg可以直接將nodejs項目打包成可執行文件,直接可以在沒有node環境下的freebsd,linux,alpine,macos,win上運行。

pkg打包的原理

pkg實際上並不是直接將程序轉換成可執行文件,而是將node環境一起打包到了程序中,這樣就可以做到不用在沒有node環境下的電腦上運行node項目了,是不是很方便。下面我就將帶領大家一起來看下如何使用pkg打包。測試用例使用的是nodejs的express

使用場景

  • 在沒有來源的情況下制作商業版的應用程序
  • 在沒有來源的情況下制作應用的演示/評估/試用版
  • 立即為其他平台制作可執行文件(交叉編譯)
  • 制作某種自解壓存檔或安裝程序
  • 無需安裝Node.js和npm來運行打包的應用程序
  • 無需下載無數個文件npm install來部署您的應用程序。將其部署為單個文件
  • 將您的資產放在可執行文件中,使其更具可移植性
  • 針對新的Node.js版本測試您的應用程序而不安裝它

舉例

簡單看下項目的目錄結構和代碼,首先你得初始化一個express項目,添加express的依賴

將NodeJS項目打包,編譯成跨平台的可執行文件

 

將NodeJS項目打包,編譯成跨平台的可執行文件

 

運行一些index.js文件,瀏覽器打開看下效果

將NodeJS項目打包,編譯成跨平台的可執行文件

 

我們這是直接在項目中運行的,結果如上圖所示,現在我們的項目還是一個js文件,然后相互依賴,接下來我們使用pkg

安裝(因為電腦是windows系統,就在windows系統下運行)

安裝非常簡單,需要全局安裝

npm install -g pkg

然后我們使用pkg --help先看下有哪些可用的命令

將NodeJS項目打包,編譯成跨平台的可執行文件

 

pkg可以一次為多個目標計算機生成可執行文件。可以通過--targets 選項指定以逗號分隔的目標列表。規范目標由3個元素組成,例如用短划線分隔,node6-macos-x64或者node4-linux-armv6

  • 配置

打包過程中pkg會解析項目中的資源,檢測到require,遍歷項目的依賴項並將它們包含到可執行文件中。有些時候我們需要手動加入資源文件路徑,比如我們這個項目中的views,我們需要改一下package.json

 "pkg": {
"assets": "views/**/*"
}
將NodeJS項目打包,編譯成跨平台的可執行文件

 

  • 打包(命令很簡單)
pkg index.js
將NodeJS項目打包,編譯成跨平台的可執行文件

 

然后需要等待一段時間,最終結果如下

將NodeJS項目打包,編譯成跨平台的可執行文件

 

我們打開我們的index-win.exe測試下

將NodeJS項目打包,編譯成跨平台的可執行文件

 

運行成功,然后打開瀏覽器,和之前一樣的效果

總結

pgk是一個將nodejs項目打包成可執行文件的工具,我們可以用它做很多事情,本文只是簡單舉例,更多復雜的配置,可以配合官網介紹,然后運用到自己項目中,希望對你有幫助。

 

轉自https://www.toutiao.com/a6804016732118712843/?timestamp=1584269058&app=news_article&group_id=6804016732118712843&req_id=20200315184418010014041161352A8A5D

喜歡這篇文章?歡迎打賞~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM