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 自动转到命名锚记
Jan 10 Javascript
jquery在Chrome下获取图片的长宽问题解决
Mar 20 Javascript
JS中eval函数的使用示例
Jul 21 Javascript
基于jQuery实现的旋转彩圈实例
Jun 26 Javascript
JavaScript 七大技巧(一)
Dec 13 Javascript
jQuery操作Table技巧大汇总
Jan 23 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
Jan 22 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
nginx+vue.js实现前后端分离的示例代码
Feb 12 Javascript
layUI实现前端分页和后端分页
Jul 27 Javascript
原生js实现随机点餐效果
Dec 10 Javascript
vue 遮罩层阻止默认滚动事件操作
Jul 28 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
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
php 类自动载入的方法
2015/06/03 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
JS 分号引起的一段调试问题
2009/06/18 Javascript
Javascript this指针
2009/07/30 Javascript
我遇到的参数传递中 双引号单引号嵌套问题
2010/02/11 Javascript
jquery mobile实现拨打电话功能的几种方法
2013/08/05 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
原生JS可拖动弹窗效果实例代码
2013/11/09 Javascript
JQuery each打印JS对象的方法
2013/11/13 Javascript
实例详解angularjs和ajax的结合使用
2015/10/22 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
原生js实现轮播图的示例代码
2017/02/20 Javascript
Vue.js实现输入框绑定的实例代码
2017/08/24 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
[22:59]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:04:08]完美世界DOTA2联赛PWL S3 INK ICE vs GXR 第一场 12.16
2020/12/18 DOTA
Python中使用Inotify监控文件实例
2015/02/14 Python
Python中isnumeric()方法的使用简介
2015/05/19 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
pyqt5的QComboBox 使用模板的具体方法
2018/09/06 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
python求质数列表的例子
2019/11/24 Python
Python如何通过Flask-Mail发送电子邮件
2020/01/29 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
介绍java中初始化块的使用
2012/09/11 面试题
航空大学应届生求职信
2013/11/10 职场文书
职位说明书范文
2014/05/07 职场文书
贷款承诺书范文
2014/05/19 职场文书
优秀护士事迹材料
2014/12/25 职场文书
2019垃圾分类宣传口号汇总
2019/08/16 职场文书
承诺书应该怎么写?
2019/09/10 职场文书