node打包可執行文件工具——Pkg使用心得

項目地址vue

這個項目很神奇,直接將node.js項目打包成windows能夠直接執行的exe文件(也支持FreeBSD、linux、macos、arm系統),甚至不須要安裝Node.js,且無須修改你項目中的任何代碼!node

首先安裝pkglinux

npm install -g pkg

而後在項目目錄下執行git

pkg entrance.js

便可打包linux,macos,win3個平臺的可執行文件。entrance.js爲你node項目的入口文件。github

若是隻想打包windows下的exe,則加上-t參數。win即爲打包成windows平臺下的exe文件,具體可選參數參見項目目錄vue-cli

pkg -t win entrance.js

 

稍等片刻後項目目錄下就會生成打包好的entrance.exe文件。express

pkg會自動從入口文件開始查找依賴的文件並全數打包進去,無須修改項目裏的任何代碼。macos

 

其餘npm

pkg能夠根據package.json下的配置進行打包,默認入口文件爲bin指向的文件。
執行
pkg .

或是json

pkg package.json

便可自動按照package.json的配置打包。

//package.json
{ //其餘配置項
    "bin": "service.js",//入口文件
    "pkg": { "scripts": [ "build/**/*.js"//須要打包進來的其餘js文件,可添加多個
 ], "assets": [ "dist/**/*"//靜態文件的目錄,可添加多個
 ] } } 

注意:靜態文件須要在項目中將文件的引用換成

path.join(__dirname, 'dist')

的形式,才能夠正常打包,不然可能會讀取不到。

 

示例

使用vue-cli創建項目,並使用npm run build將你的項目編譯生成靜態文件到dist目錄下。這些都是vue-cli自帶的內容,再也不贅述。

在項目目錄下新建一個service.js文件,並添加如下代碼,在本地起一個express靜態服務器,使你可以在本地訪問你的網站(部署到線上也是相似)

//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',雖然在命令行中執行起來效果是同樣的,不過pkg打包會沒法識別到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}`)
})

 

此時你能夠在控制檯執行

node service.js

來啓動你的服務器了,啓動完成後,瀏覽器訪問http://localhost:8081/便可查看你的網站。

 

接下來咱們使用將service.js和dist目錄打包成一個exe文件,方便他人使用

首先安裝pkg

npm install -g pkg

而後修改package.json,添加bin(若是不是service.js的話)和pkg項

{ //其餘配置項
    "bin": "service.js",//指定入口文件 "pkg": { "assets": [ "dist/**/*"//指定要打包的靜態文件目錄 ] } }

而後在項目目錄下執行

pkg -t win package.json

完成後即生成一個exe文件,雙擊啓動即至關於執行node service.js,而後你瀏覽器裏(http://localhost:8081/)就能訪問打包好的項目了!也不須要提早安裝node,給老闆演示很方便有木有!

相關文章
相關標籤/搜索