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 相关文章推荐
Packer 3.0 JS压缩及混淆工具 下载
May 03 Javascript
解决extjs在firefox中关闭窗口再打开后iframe中js函数访问不到的问题
Nov 06 Javascript
不提示直接关闭网页窗口的JS示例代码
Dec 17 Javascript
javascript日期对象格式化为字符串的实现方法
Jan 14 Javascript
JavaScript如何禁止Backspace键
Dec 02 Javascript
AngularJs Managing Service Dependencies详解
Sep 02 Javascript
Javascript生成带参数的二维码示例
Oct 10 Javascript
详解JS: reduce方法实现 webpack多文件入口
Feb 14 Javascript
vue实现百度搜索功能
Dec 28 Javascript
解决vue项目获取dom元素宽高总是不准确问题
Jul 29 Javascript
JSON 入门教程基础篇 json入门学习笔记
Sep 22 Javascript
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
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
在windows iis5下安装php4.0+mysql之我见
2006/10/09 PHP
PHP 中的批处理的实现
2007/06/14 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
jquery文档操作wrap()方法实例简述
2015/01/10 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JS简单模拟触发按钮点击功能的方法
2015/11/30 Javascript
js+css绘制颜色动态变化的圈中圈效果
2016/01/27 Javascript
Express与NodeJs创建服务器的两种方法
2017/02/06 NodeJs
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
解决Vue使用swiper动态加载数据,动态轮播数据显示白屏的问题
2018/09/27 Javascript
js 实现 list转换成tree的方法示例(数组到树)
2019/08/18 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
支付宝小程序实现省市区三级联动
2020/06/21 Javascript
vue中利用three.js实现全景图的完整示例
2020/12/07 Vue.js
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
python删除特定文件的方法
2015/07/30 Python
python基于phantomjs实现导入图片
2016/05/13 Python
对python mayavi三维绘图的实现详解
2019/01/08 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
python-sys.stdout作为默认函数参数的实现
2020/02/21 Python
jupyter notebook 多行输出实例
2020/04/09 Python
深入了解Python enumerate和zip
2020/07/16 Python
Crocs美国官方网站:卡骆驰洞洞鞋
2017/08/04 全球购物
自主招生自荐信
2013/12/08 职场文书
供用电专业求职信
2014/07/07 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
2014年医生工作总结
2014/11/21 职场文书
个人创业事迹材料
2014/12/30 职场文书
快速学习Oracle触发器和游标
2021/06/30 Oracle
一篇文章带你学习Mybatis-Plus(新手入门)
2021/08/02 Java/Android