基于node打包可执行文件工具_Pkg使用心得分享


Posted in Javascript onJanuary 24, 2018

项目地址

基于node打包可执行文件工具_Pkg使用心得分享

这个项目很神奇,直接将node.js项目打包成windows可以直接执行的exe文件(也支持FreeBSD、linux、macos、arm系统),甚至不需要安装Node.js,且无须修改你项目中的任何代码!

首先安装pkg

npm install -g pkg

然后在项目目录下执行

pkg entrance.js

即可打包linux,macos,win3个平台的可执行文件。entrance.js为你node项目的入口文件。

如果只想打包windows下的exe,则加上-t参数。win即为打包成windows平台下的exe文件,具体可选参数参见项目目录

pkg -t win entrance.js

稍等片刻后项目目录下就会生成打包好的entrance.exe文件。

pkg会自动从入口文件开始查找依赖的文件并全数打包进去,无须修改项目里的任何代码。

其他

pkg可以根据package.json下的配置进行打包,默认入口文件为bin指向的文件。
执行
pkg .

或是

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静态服务器,使你能够在本地访问你的网站(部署到线上也是类似)

基于node打包可执行文件工具_Pkg使用心得分享

//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,给老板演示很方便有木有!

以上这篇基于node打包可执行文件工具_Pkg使用心得分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让网页根据不同IE版本显示不同的内容
Feb 08 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
Dec 24 Javascript
JavaScript判断是否为数字的4种方法及效率比较
Apr 01 Javascript
基于Angular.js实现的触摸滑动动画实例代码
Feb 19 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
vue2.0 子组件改变props值,并向父组件传值的方法
Mar 01 Javascript
vue2中使用sass并配置全局的sass样式变量的方法
Sep 04 Javascript
微信小程序之swiper滑动面板用法示例
Dec 04 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 Javascript
JS实现点击下拉列表文本框中出现对应的网址,点击跳转按钮实现跳转
Nov 25 Javascript
在Vue 中获取下拉框的文本及选项值操作
Aug 13 Javascript
Angular整合zTree的示例代码
Jan 24 #Javascript
使用classList来实现两个按钮样式的切换方法
Jan 24 #Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 #Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 #Javascript
简述vue中的config配置
Jan 23 #Javascript
JS实现多物体运动的方法详解
Jan 23 #Javascript
JS运动改变单物体透明度的方法分析
Jan 23 #Javascript
You might like
PHP sprintf()函数用例解析
2011/05/18 PHP
php urlencode()与urldecode()函数字符编码原理详解
2011/12/06 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
浅谈javascript获取元素transform参数
2015/07/24 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
JavaScript仿百度图片浏览效果
2016/11/23 Javascript
angular2 ng build部署后base文件路径问题详细解答
2017/07/15 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
SelectPage v2.4 发布新增纯下拉列表和关闭分页功能
2017/09/07 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
Vuejs开发环境搭建及热更新【推荐】
2018/09/07 Javascript
React 组件渲染和更新的实现代码示例
2019/02/21 Javascript
layer弹出层倒计时关闭的实现方法
2019/09/27 Javascript
js prototype深入理解及应用实例分析
2019/11/25 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
[52:08]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#2Fnatic VS OG第一局
2016/03/05 DOTA
[01:00:53]OG vs IG 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
Python实现感知机(PLA)算法
2017/12/20 Python
读取json格式为DataFrame(可转为.csv)的实例讲解
2018/06/05 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
python中ImageTk.PhotoImage()不显示图片却不报错问题解决
2018/12/06 Python
Python 下载及安装详细步骤
2019/11/04 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
Python使用tkinter制作在线翻译软件
2021/02/22 Python
css3 利用transform打造走动的2D时钟
2020/10/20 HTML / CSS
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
货款欠条范本
2015/07/03 职场文书
大学军训心得体会800字
2016/01/11 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python
科普 | 业余无线电知识-波段篇
2022/02/18 无线电