最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

背景

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

PKG

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

安裝

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

npm install -g pkg

使用

一般兩種方式,簡(jiǎn)單一點(diǎn)的我們可以通過(guò)命令行的參數(shù)來(lái)打包,更加推薦一種方式是把相應(yīng)的參數(shù)寫在package.json文件中,其中bin字段就是打包的入口,pkg字段就是打包時(shí)的一些配置參數(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就會(huì)將當(dāng)前的ts工程的node服務(wù)應(yīng)用先打包到dist目錄下,然后再以dist/index.js為入口文件打包這個(gè)node服務(wù)為一個(gè)可執(zhí)行的文件。

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

效果如下所示:

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

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

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

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

如果我們按照上面的配置直接進(jìn)行打包的話,在電腦中運(yùn)行這個(gè)文件時(shí)會(huì)拋出以下的錯(cuò)誤:

大意是需要將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í)行打包命令,運(yùn)行效果如下所示:

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

pkg是一個(gè)很強(qiáng)大的打包工具,這里是以mac平臺(tái)為例,其余的linux、windows也是同樣的效果。

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

總結(jié)

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

相關(guān)文章

  • Node.js中的HTTP模塊與URL模塊

    Node.js中的HTTP模塊與URL模塊

    這篇文章介紹了Node.js中的HTTP模塊與URL模塊,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • 基于Node.js實(shí)現(xiàn)壓縮和解壓縮的方法

    基于Node.js實(shí)現(xiàn)壓縮和解壓縮的方法

    本篇文章主要介紹了基于Node.js實(shí)現(xiàn)壓縮和解壓縮的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • Node.js中的?http?模塊實(shí)戰(zhàn)舉例

    Node.js中的?http?模塊實(shí)戰(zhàn)舉例

    Node.js的http模塊是核心工具,用于創(chuàng)建HTTP服務(wù)器和客戶端,處理請(qǐng)求響應(yīng),支持HTTP/1.1協(xié)議,提供createServer、request等方法,是構(gòu)建Web應(yīng)用的基礎(chǔ),也可結(jié)合實(shí)現(xiàn)WebSocket協(xié)議,本文給大家介紹Node.js中的http模塊的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2025-09-09
  • 詳解使用Typescript開(kāi)發(fā)node.js項(xiàng)目(簡(jiǎn)單的環(huán)境配置)

    詳解使用Typescript開(kāi)發(fā)node.js項(xiàng)目(簡(jiǎn)單的環(huán)境配置)

    本篇文章主要介紹了詳解使用Typescript開(kāi)發(fā)node.js項(xiàng)目(簡(jiǎn)單的環(huán)境配置),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10
  • Nodejs模塊載入運(yùn)行原理

    Nodejs模塊載入運(yùn)行原理

    本篇文章給大家詳細(xì)分享了Nodejs模塊載入運(yùn)行原理知識(shí)點(diǎn),對(duì)此有興趣的朋友可以跟著小編一起學(xué)習(xí)下。
    2018-02-02
  • 從零開(kāi)始學(xué)習(xí)Node.js系列教程六:EventEmitter發(fā)送和接收事件的方法示例

    從零開(kāi)始學(xué)習(xí)Node.js系列教程六:EventEmitter發(fā)送和接收事件的方法示例

    這篇文章主要介紹了Node.js EventEmitter發(fā)送和接收事件的方法,結(jié)合實(shí)例形式分析了EventEmitter發(fā)送和接收事件的原理、實(shí)現(xiàn)方法與相關(guān)操作技巧,需要的朋友可以參考下
    2017-04-04
  • node事件循環(huán)中事件執(zhí)行的順序

    node事件循環(huán)中事件執(zhí)行的順序

    在瀏覽器環(huán)境下我們的js有一套自己的事件循環(huán),同樣在node環(huán)境下也有一套類似的事件循環(huán)。本文就詳細(xì)的來(lái)介紹一下,感興趣的可以了解一下
    2021-08-08
  • nvm使用和nodejs切換版本詳細(xì)圖文教程

    nvm使用和nodejs切換版本詳細(xì)圖文教程

    nvm 是node version manager(node 版本管理工具)的縮寫,是一個(gè)命令行工具,用于管理和切換到不同版本的 node.js,下面這篇文章主要給大家介紹了關(guān)于nvm使用和nodejs切換版本的相關(guān)資料,需要的朋友可以參考下
    2024-04-04
  • nodejs通過(guò)釘釘群機(jī)器人推送消息的實(shí)現(xiàn)代碼

    nodejs通過(guò)釘釘群機(jī)器人推送消息的實(shí)現(xiàn)代碼

    最近在用 nodejs 寫爬蟲(chóng),之前的 nodejs 爬蟲(chóng)代碼用 js 寫的,感覺(jué)可維護(hù)性太差,也沒(méi)有智能提示,于是把js改用ts(typescript)重寫一下,提升代碼質(zhì)量。接下來(lái)通過(guò)本文給大家分享nodejs通過(guò)釘釘群機(jī)器人推送消息,需要的朋友參考下吧
    2019-05-05
  • nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類示例

    nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類示例

    這篇文章主要介紹了nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類,涉及nodejs操作redis進(jìn)行緩存設(shè)置相關(guān)操作技巧,需要的朋友可以參考下
    2018-02-02

最新評(píng)論

枣阳市| 兴城市| 克东县| 高台县| 卓尼县| 博乐市| 普定县| 横山县| 沾化县| 大城县| 尼木县| 石楼县| 青岛市| 龙川县| 海晏县| 龙泉市| 渭源县| 北安市| 临清市| 扶绥县| 罗田县| 靖宇县| 辽中县| 崇明县| 苍梧县| 乐亭县| 根河市| 芒康县| 万宁市| 海阳市| 平陆县| 疏勒县| 桐梓县| 从江县| 西乡县| 蒙城县| 呼图壁县| 左权县| 永靖县| 枞阳县| 舒兰市|