node app 打包工具pkg的具体使用


Posted in Javascript onJanuary 17, 2019

node 打包可执行文件的工具有很多。node-packer 是国人写的,但一年前就停止更新了。而 nexe 一到fetching prebuilt binary 就报错,放弃了,最终选择了 pkg。

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

命令行打包

pkg -t node10-macos-x64 index.js

package.json 配置

如果不想每次都输入这么多参数,则需要在 packge.json 文件增加一个 bin 和 pkg 选项:

```
"pkg": {
"scripts": [], // 不需要 striped 的 js 文件
"targets": [ // 打包选项,格式为:node版本-平台类型 mac 或 windows-架构
 "node10-win-x64",
 "node10-macos-x64"
],
"output": "proxy" // 可执行文件名,比如 proxy-win.exe 或 proxy-macos
},
"bin": "index.js" // app 的启动文件
```

然后,你只需要用 pkg . 就可以了。

注:pkg 最多只支持到 node 10 版本。node 11 还暂不支持。

Assets

有一些文件,它不是 js 文件,也没有在代码中 require 过,比如 html 和 css 文件。pkg 就无能为力了。如果想将这些文件也打包到可执行文件中,将它们放到 pakcage.json 的 pkg 的 assets 数组中就可以了,比如:

"assets": [ // 需要被打包的资源文件(即没有在代码中被 require 过的文件)
 "index.html"
],

动态加载的文件

有一些文件,你不想打包进去,比如一些配置文件、json 文件,可以在 require 时指定绝对路径,比如 data 目录下的 users.json 文件:

const users = require(path.join(process.execPath,'../data/users.json'))

然后在打包后,将在可执行文件的同级目录下新建 data 目录,再将 users.json 文件拷贝到 data 目录即可。

这样,以在运行时改变 app 的一些参数。

注意,修改 users.json 文件内容后,需要重启可执行文件才能生效。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js切换div css注意的细节
Dec 10 Javascript
jQuery实现的数值范围range2dslider选取插件特效多款代码分享
Aug 27 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
Nov 04 Javascript
jquery制作属于自己的select自定义样式
Nov 23 Javascript
JavaScript代码里的判断小结
Aug 22 Javascript
学习vue.js表单控件绑定操作
Dec 05 Javascript
jq checkbox 的全选并ajax传参的实例
Apr 01 Javascript
vue2.0项目中使用Ueditor富文本编辑器示例代码
Aug 14 Javascript
基于JQuery的Ajax方法使用详解
Aug 16 jQuery
JavaScript的setter与getter方法
Nov 29 Javascript
vue.js根据代码运行环境选择baseurl的方法
Feb 28 Javascript
vue仿element实现分页器效果
Sep 13 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 #Javascript
JS使用Dijkstra算法求解最短路径
Jan 17 #Javascript
JavaScript简单实现的仿微博留言功能示例
Jan 17 #Javascript
vue权限管理系统的实现代码
Jan 17 #Javascript
使用nvm和nrm优化node.js工作流的方法
Jan 17 #Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
Jan 17 #Javascript
微信小程序使用wxParse解析html的方法示例
Jan 17 #Javascript
You might like
Ajax中的JSON格式与php传输过程全面解析
2017/11/14 PHP
php获取微信openid方法总结
2019/10/10 PHP
一段实现页面上的图片延时加载的js代码
2010/02/11 Javascript
JS按位非(~)运算符与~~运算符的理解分析
2011/07/31 Javascript
js处理自己不能定义二维数组的方法详解
2014/03/03 Javascript
JavaScript中检查对象property的存在性方法介绍
2014/12/30 Javascript
JS给超链接加确认对话框的方法
2015/02/24 Javascript
js返回顶部实例分享
2016/12/21 Javascript
vue获取input输入值的问题解决办法
2017/10/17 Javascript
Node.js中读取TXT文件内容fs.readFile()用法
2018/10/10 Javascript
使用apifm-wxapi模块中的问题及解决方法
2019/08/05 Javascript
微信小程序 高德地图路线规划实现过程详解
2019/08/05 Javascript
js实现省级联动(数据结构优化)
2020/07/17 Javascript
python编写简单爬虫资料汇总
2016/03/22 Python
python实现识别手写数字 python图像识别算法
2020/03/23 Python
Python管理Windows服务小脚本
2018/03/12 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
基于python traceback实现异常的获取与处理
2019/12/13 Python
Python求平面内点到直线距离的实现
2020/01/19 Python
Python tkinter 下拉日历控件代码
2020/03/04 Python
python两个list[]相加的实现方法
2020/09/23 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
Booking.com美国:全球酒店预订网站
2017/04/18 全球购物
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
小蚁科技官方商店:YI Technology
2019/08/23 全球购物
七年级音乐教学反思
2014/01/26 职场文书
十佳文明家庭事迹
2014/05/25 职场文书
建设工地安全标语
2014/06/07 职场文书
机电系毕业生求职信
2014/07/11 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
入党积极分子半年考察意见
2015/06/02 职场文书