基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享
這個(gè)項(xiàng)目很神奇,直接將node.js項(xiàng)目打包成windows可以直接執(zhí)行的exe文件(也支持FreeBSD、linux、macos、arm系統(tǒng)),甚至不需要安裝Node.js,且無(wú)須修改你項(xiàng)目中的任何代碼!
首先安裝pkg
npm install -g pkg
然后在項(xiàng)目目錄下執(zhí)行
pkg entrance.js
即可打包linux,macos,win3個(gè)平臺(tái)的可執(zhí)行文件。entrance.js為你node項(xiàng)目的入口文件。
如果只想打包windows下的exe,則加上-t參數(shù)。win即為打包成windows平臺(tái)下的exe文件,具體可選參數(shù)參見(jiàn)項(xiàng)目目錄
pkg -t win entrance.js
稍等片刻后項(xiàng)目目錄下就會(huì)生成打包好的entrance.exe文件。
pkg會(huì)自動(dòng)從入口文件開(kāi)始查找依賴的文件并全數(shù)打包進(jìn)去,無(wú)須修改項(xiàng)目里的任何代碼。
其他
pkg .
或是
pkg package.json
即可自動(dòng)按照package.json的配置打包。
//package.json { //其他配置項(xiàng) "bin": "service.js",//入口文件 "pkg": { "scripts": [ "build/**/*.js"http://需要打包進(jìn)來(lái)的其他js文件,可添加多個(gè) ], "assets": [ "dist/**/*"http://靜態(tài)文件的目錄,可添加多個(gè) ] } }
注意:靜態(tài)文件需要在項(xiàng)目中將文件的引用換成
path.join(__dirname, 'dist')
的形式,才可以正常打包,否則可能會(huì)讀取不到。
示例
使用vue-cli建立項(xiàng)目,并使用npm run build將你的項(xiàng)目編譯生成靜態(tài)文件到dist目錄下。這些都是vue-cli自帶的內(nèi)容,不再贅述。
在項(xiàng)目目錄下新建一個(gè)service.js文件,并添加以下代碼,在本地起一個(gè)express靜態(tài)服務(wù)器,使你能夠在本地訪問(wèn)你的網(wǎng)站(部署到線上也是類(lèi)似)
//service.js const express = require('express'); const app = express(); const path = require('path'); app.use(express.static(path.join(__dirname, 'dist')));//注意這里使用path.join(__dirname, 'dist')而不是'dist',雖然在命令行中執(zhí)行起來(lái)效果是一樣的,不過(guò)pkg打包會(huì)無(wú)法識(shí)別到dist目錄 var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log(`AIbuy agents server start successfully on http://${host}:${port}`) })
此時(shí)你可以在控制臺(tái)執(zhí)行
node service.js
來(lái)啟動(dòng)你的服務(wù)器了,啟動(dòng)完成后,瀏覽器訪問(wèn)http://localhost:8081/即可查看你的網(wǎng)站。
接下來(lái)我們使用將service.js和dist目錄打包成一個(gè)exe文件,方便他人使用
首先安裝pkg
npm install -g pkg
然后修改package.json,添加bin(如果不是service.js的話)和pkg項(xiàng)
{ //其他配置項(xiàng) "bin": "service.js",//指定入口文件 "pkg": { "assets": [ "dist/**/*"http://指定要打包的靜態(tài)文件目錄 ] } }
然后在項(xiàng)目目錄下執(zhí)行
pkg -t win package.json
完成后即生成一個(gè)exe文件,雙擊啟動(dòng)即相當(dāng)于執(zhí)行node service.js,然后你瀏覽器里(http://localhost:8081/)就能訪問(wèn)打包好的項(xiàng)目了!也不需要提前安裝node,給老板演示很方便有木有!
以上這篇基于node打包可執(zhí)行文件工具_(dá)Pkg使用心得分享就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于NodeJS的前后端分離的思考與實(shí)踐(六)Nginx + Node.js + Java 的軟件棧部署實(shí)踐
關(guān)于前后端分享的思考,我們已經(jīng)有五篇文章闡述思路與設(shè)計(jì)。本文介紹淘寶網(wǎng)收藏夾將 Node.js 引入傳統(tǒng)技術(shù)棧的具體實(shí)踐。2014-09-09nodejs結(jié)合Socket.IO實(shí)現(xiàn)的即時(shí)通訊功能詳解
這篇文章主要介紹了nodejs結(jié)合Socket.IO實(shí)現(xiàn)的即時(shí)通訊功能,結(jié)合實(shí)例形式詳細(xì)分析了nodejs結(jié)合Socket.IO實(shí)現(xiàn)即時(shí)通訊的相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下2018-01-01node.js基于dgram數(shù)據(jù)報(bào)模塊創(chuàng)建UDP服務(wù)器和客戶端操作示例
這篇文章主要介紹了node.js基于dgram數(shù)據(jù)報(bào)模塊創(chuàng)建UDP服務(wù)器和客戶端操作,結(jié)合實(shí)例形式分析了node.js使用dgram數(shù)據(jù)報(bào)模塊創(chuàng)建UDP服務(wù)器和客戶端,以及進(jìn)行UDP廣播、組播相關(guān)操作技巧,需要的朋友可以參考下2020-02-02詳解基于node.js的腳手架工具開(kāi)發(fā)經(jīng)歷
這篇文章主要介紹了詳解基于node.js的腳手架工具開(kāi)發(fā)經(jīng)歷,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01在Ubuntu系統(tǒng)上安裝Ghost博客平臺(tái)的教程
這篇文章主要介紹了在Ubuntu系統(tǒng)上安裝Ghost博客平臺(tái)的教程,Ghost博客平臺(tái)以Node.js寫(xiě)成,需要的朋友可以參考下2015-06-06詳解nodejs中exports和module.exports的區(qū)別
本文主要介紹了exports 和 module.exports 的區(qū)別。具有很好的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-02-02nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類(lèi)示例
這篇文章主要介紹了nodejs使用redis作為緩存介質(zhì)實(shí)現(xiàn)的封裝緩存類(lèi),涉及nodejs操作redis進(jìn)行緩存設(shè)置相關(guān)操作技巧,需要的朋友可以參考下2018-02-02