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中汉字显示乱码问题(已解决)
Dec 27 Javascript
jQuery实现表头固定效果的实例代码
May 24 Javascript
jQuery让控件左右移动的三种实现方法
Sep 08 Javascript
JavaScript获取伪元素(Pseudo-Element)属性的方法技巧
Mar 13 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 Javascript
微信小程序实现移动端滑动分页效果(ajax)
Jun 13 Javascript
Angular简单验证功能示例
Dec 22 Javascript
浅析js中mvvm模式实现的原理
Oct 06 Javascript
微信小程序自定义带价格显示日历效果
Dec 29 Javascript
关于layui表单中按钮自动提交的解决方法
Sep 09 Javascript
在antd4.0中Form使用initialValue操作
Nov 02 Javascript
原生JS实现拖拽效果
Dec 04 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
Windows下利用Gvim写PHP产生中文乱码问题解决方法
2011/04/20 PHP
兼容firefox,chrome的网页灰度效果
2011/08/08 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
深入浅析PHP无限极分类的案例教程
2016/05/09 PHP
PHP7导出Excel报ERR_EMPTY_RESPONSE解决方法
2019/04/16 PHP
JS 控制非法字符的输入代码
2009/12/04 Javascript
jquery png 透明解决方案(推荐)
2010/08/21 Javascript
Javascript前端UI框架Kit使用指南之kitjs事件管理
2014/11/28 Javascript
pace.js页面加载进度条插件
2015/09/29 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
Vue表情输入组件 微信face表情组件
2019/02/11 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
微信小程序实现左滑动删除效果
2020/03/30 Javascript
Python实现注册登录系统
2017/08/08 Python
儿童学习python的一些小技巧
2018/05/27 Python
利用Django提供的ModelForm增删改数据的方法
2019/01/06 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python HTMLTestRunner库安装过程解析
2020/05/25 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
python 实时调取摄像头的示例代码
2020/11/25 Python
html5利用canvas绘画二级树形结构图的示例
2017/09/27 HTML / CSS
荷兰牛仔裤网上商店:Jeans Centre
2018/04/03 全球购物
阿玛尼意大利官网:Armani意大利
2018/10/30 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
链表面试题-一个链表的结点结构
2015/05/04 面试题
英文翻译的自我评价语句
2013/10/04 职场文书
自主招生自荐书
2013/11/29 职场文书
毕业生自荐书
2014/02/02 职场文书
物业保洁员岗位职责
2015/02/13 职场文书
开国大典观后感
2015/06/04 职场文书
工作收入证明范本
2015/06/12 职场文书
MySql 8.0及对应驱动包匹配的注意点说明
2021/06/23 MySQL
用Python实现屏幕截图详解
2022/01/22 Python
element tree树形组件回显数据问题解决
2022/08/14 Javascript