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 比较时间大小的代码
Apr 24 Javascript
统计jQuery中各字符串出现次数的工具
May 03 Javascript
jquery数据验证插件(自制,简单,练手)实例代码
Oct 24 Javascript
Jquery通过Ajax方式来提交Form表单的具体实现
Nov 07 Javascript
javascript从image转换为base64位编码的String
Jul 29 Javascript
JavaScript函数中的this四种绑定形式
Aug 15 Javascript
JS实现的文字间歇循环滚动效果完整示例
Feb 13 Javascript
jQuery使用动画队列自定义动画操作示例
Jun 16 jQuery
浅谈Angular7 项目开发总结
Dec 19 Javascript
简单易扩展可控性强的Jquery转盘抽奖程序
Mar 16 jQuery
Typescript的三种运行方式(小结)
Sep 18 Javascript
element-ui tooltip修改背景颜色和箭头颜色的实现
Dec 16 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网站在线人数统计
2008/04/09 PHP
Linux下CoreSeek及PHP扩展模块的安装
2012/09/23 PHP
PHP+Mysql+jQuery文件下载次数统计实例讲解
2015/10/10 PHP
Yii实现简单分页的方法
2016/04/29 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
PHP 传输会话curl函数的实例详解
2017/09/12 PHP
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
window.location不跳转的问题解决方法
2014/04/17 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
2014/12/31 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
AngularJs IE Compatibility 兼容老版本IE
2016/09/01 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
概述jQuery中的ajax方法
2016/12/16 Javascript
vue路由前进后退动画效果的实现代码
2018/12/10 Javascript
angular6根据environments配置文件更改开发所需要的环境的方法
2019/03/06 Javascript
Vue仿微信app页面跳转动画效果
2019/08/21 Javascript
layui实现tab的添加拒绝重复的方法
2019/09/04 Javascript
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
Python列表元素常见操作简单示例
2019/10/25 Python
Python 实现自动完成A4标签排版打印功能
2020/04/09 Python
如何使用python记录室友的抖音在线时间
2020/06/29 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
Python分类测试代码实例汇总
2020/07/23 Python
python字典按照value排序方法
2020/12/28 Python
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
会计岗位职责
2013/11/08 职场文书
关于读书的演讲稿300字
2014/08/27 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
从事会计工作年限证明
2015/06/23 职场文书
回复函格式及范文
2015/07/14 职场文书