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 相关文章推荐
javascript引用对象的方法代码
Aug 13 Javascript
原生javascript获取元素样式属性值的方法
Dec 25 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
Nov 17 Javascript
JS实现网页标题栏显示当前时间和日期的完整代码
Nov 02 Javascript
jQuery Easyui datagrid/treegrid 清空数据
Jul 09 Javascript
VUE元素的隐藏和显示(v-show指令)
Jun 23 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
Jul 12 Javascript
JavaScript callback回调函数用法实例分析
May 08 Javascript
vue单页开发父子组件传值思路详解
May 18 Javascript
VUE table表格动态添加一列数据,新增的这些数据不可以编辑(v-model绑定的数据不能实时更新)
Apr 03 Javascript
微信小程序的引导页实现代码
Jun 24 Javascript
JS中循环遍历数组的四种方式总结
Jan 23 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
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
使用PHP备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
PHP 访问数据库配置通用方法(json)
2018/05/20 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
javascript继承之为什么要继承
2012/11/10 Javascript
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
jquery快捷动态绑定键盘事件的操作函数代码
2013/10/17 Javascript
点击按钮或链接不跳转只刷新页面的脚本整理
2013/10/22 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
javascript深拷贝和浅拷贝详解
2017/02/14 Javascript
JavaScript面向对象精要(下部)
2017/09/12 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
layui点击按钮页面会自动刷新的解决方案
2019/10/25 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
ssh批量登录并执行命令的python实现代码
2012/05/25 Python
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
python K近邻算法的kd树实现
2018/09/06 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
会计专业自我鉴定范文
2013/10/06 职场文书
生产车间主管岗位职责
2013/12/28 职场文书
给交警的表扬信
2014/01/12 职场文书
超市中秋节活动方案
2014/02/12 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
美国留学经济担保书
2014/05/20 职场文书
经理岗位职责
2015/02/02 职场文书
春节慰问信范文
2015/02/15 职场文书
药店营业员岗位职责
2015/04/14 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
pytorch查看网络参数显存占用量等操作
2021/05/12 Python
Mysql数据库索引面试题(程序员基础技能)
2021/05/31 MySQL
Redis高并发防止秒杀超卖实战源码解决方案
2021/11/01 Redis