亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

如何將node服務(wù)打包成可執(zhí)行文件PKG

 更新時間:2023年10月31日 08:51:32   作者:問白  
這篇文章主要介紹了如何將node服務(wù)打包成可執(zhí)行文件PKG問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

背景

有時我們需要寫一些node的服務(wù)或者是工具,但這些工具&服務(wù)可以運行的前提條件是當(dāng)前環(huán)境需要安裝好node,有時候我們把這些工具&服務(wù)發(fā)送給別人,在別人的電腦中未必有安裝好的node版本,即便有也可能不是期望的指定的Node版本,在這樣的場景下我們可以把寫好的node 服務(wù) & 工具打包成一個可執(zhí)行文件發(fā)送給對方,將程序需要依賴的所有的東西,比如node環(huán)境,再比如跑RPA需要的瀏覽器環(huán)境也可以打包到我們自己的可執(zhí)行文件中。

PKG

我們可以借助pkg這個工具將我們的應(yīng)用打包成一個可執(zhí)行文件在mac、linux 、windows中執(zhí)行。

安裝

可以全局安裝可以以在當(dāng)前項目中安裝

npm install -g pkg

使用

一般兩種方式,簡單一點的我們可以通過命令行的參數(shù)來打包,更加推薦一種方式是把相應(yīng)的參數(shù)寫在package.json文件中,其中bin字段就是打包的入口,pkg字段就是打包時的一些配置參數(shù)。

比如看下面的配置

"scripts": {
    "build": "rm -rf dist && tsc && tsc-alias && cp package.json ./dist",
    "pkg": "npm run build && rm -rf package && pkg ."
  },
  "bin": "dist/index.js",
  "pkg": {
    "targets": [
      "node16-macos-arm64"
    ],
    "outputPath": "package"
  },

在命令行中執(zhí)行npm run pkg就會將當(dāng)前的ts工程的node服務(wù)應(yīng)用先打包到dist目錄下,然后再以dist/index.js為入口文件打包這個node服務(wù)為一個可執(zhí)行的文件。

打包出的可執(zhí)行文件是可以在mac中運行的,其出口是在outputPath目錄下。

效果如下所示:

將chromium也打包進二進制執(zhí)行文件

在我們的業(yè)務(wù)代碼中提供一個接口可以在本地使用chromium運行RPA,這就需要我們在打包時也需要將chromium也一起打包進我們的可執(zhí)行文件,這樣才能在運行RPA時可以找到對應(yīng)的環(huán)境。

比如下面這個例子,我們使用pupputeer來做RPA,當(dāng)程序執(zhí)行時,用戶可以通過調(diào)用http://localhost:3012/rpa來運行本地的RPA操作。

這里就以打開百度網(wǎng)站輸入天氣并搜索為例子說明。

如果我們按照上面的配置直接進行打包的話,在電腦中運行這個文件時會拋出以下的錯誤:

大意是需要將node_modules/vm2/lib/setup-sandbox.js顯示的指定需要加入到打包文件中。

完整的配置如下:

"bin": "dist/index.js",
  "pkg": {
    "scripts": [
      "./node_modules/vm2/lib/setup-sandbox.js"
    ],
    "targets": [
      "node16-macos-arm64"
    ],
    "outputPath": "package"
  },

然后再執(zhí)行打包命令,運行效果如下所示:

使用這個技術(shù)我們以后就可以把寫好的工具&服務(wù)打包成一個可執(zhí)行文件直接丟給其他人,其他人無需在本地配置繁瑣的環(huán)境了,只需要點擊可執(zhí)行文件就可以享受對應(yīng)的功能服務(wù)了。

pkg是一個很強大的打包工具,這里是以mac平臺為例,其余的linux、windows也是同樣的效果。

更多打包的配置可以參考PKG

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 13 個npm 快速開發(fā)技巧(推薦)

    13 個npm 快速開發(fā)技巧(推薦)

    這篇文章主要介紹了13 個npm 快速開發(fā)技巧,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-07-07
  • 使用socket.io制做簡易WEB聊天室

    使用socket.io制做簡易WEB聊天室

    這篇文章主要為大家詳細(xì)介紹了使用socket.io制做簡易WEB聊天室,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 淺談Node.js操作剪貼板的兩種方式

    淺談Node.js操作剪貼板的兩種方式

    本文主要介紹Node.js中通過第三方工具庫clipboardy和child_process.文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-09-09
  • nodejs實現(xiàn)簡單的gulp打包

    nodejs實現(xiàn)簡單的gulp打包

    因為之前一直有人給我推薦gulp,說他這里好哪里好的。實際上對我來說夠用就行。grunt熟悉以后實際上他的配置也不難,說到效率的話確實是個問題,尤其項目大了以后,目前位置遇到的項目都還可以忍受。不過不管怎么說,需要親自用過gulp之后才能品評他和grunt之間的優(yōu)劣。
    2017-12-12
  • Node.js 使用jade模板引擎的示例

    Node.js 使用jade模板引擎的示例

    本篇文章主要介紹了Node.js 使用jade模板引擎的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-05-05
  • Node.js讀取和寫入文件的代碼示例

    Node.js讀取和寫入文件的代碼示例

    在現(xiàn)代前端開發(fā)中,Node.js已經(jīng)成為不可或缺的一部分,其高效的非阻塞I/O模型使得它非常適合處理文件操作,在這篇博客中,我們將探討如何使用Node.js讀取和寫入文件,我們會涉及基本的文件系統(tǒng)模塊,并提供可運行的代碼示例,以便您可以輕松上手
    2024-11-11
  • Node.js中同步和異步編程的區(qū)別及使用方法

    Node.js中同步和異步編程的區(qū)別及使用方法

    在Node.js中,同步和異步編程是兩種不同的處理方式。同步方式會阻塞程序的執(zhí)行,而異步方式則不會。通過掌握它們的區(qū)別和使用方法,可以更好地實現(xiàn)程序的性能優(yōu)化和功能擴展。同時,需要注意異步編程中的回調(diào)地獄問題,使用Promise可以更好地處理異步編程
    2023-05-05
  • express結(jié)合nodejs開啟服務(wù)示例模版

    express結(jié)合nodejs開啟服務(wù)示例模版

    這篇文章主要為大家展現(xiàn)了express結(jié)合nodejs開啟服務(wù)的代碼示例模版,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-04-04
  • node.js實現(xiàn)逐行讀取文件內(nèi)容的代碼

    node.js實現(xiàn)逐行讀取文件內(nèi)容的代碼

    這篇文章主要介紹了node.js實現(xiàn)逐行讀取文件內(nèi)容的代碼,本文還介紹了一個node.js的按行讀取內(nèi)容開源項目,需要的朋友可以參考下
    2014-06-06
  • Centos7 安裝Node.js10以上版本的方法步驟

    Centos7 安裝Node.js10以上版本的方法步驟

    這篇文章主要介紹了Centos7 安裝Node.js10以上版本的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10

最新評論