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 相关文章推荐
基于jQuery试卷自动排版系统
Jul 18 Javascript
javascript中IE浏览器不支持NEW DATE()带参数的解决方法
Mar 01 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
May 24 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
Dec 15 Javascript
javascript禁止访客复制网页内容的实现代码
Aug 05 Javascript
AngularJs Modules详解及示例代码
Sep 01 Javascript
微信小程序 本地数据存储实例详解
Apr 13 Javascript
3分钟掌握常用的JS操作JSON方法总结
Apr 25 Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 jQuery
jQuery替换节点元素的操作方法
Mar 18 jQuery
react native 文字轮播的实现示例
Jul 27 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 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
咖啡的种类和口感
2021/03/03 新手入门
测试php函数的方法
2013/11/13 PHP
实现在同一方法中获取当前方法中新赋值的session值解决方法
2014/06/26 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
Smarty环境配置与使用入门教程
2016/05/11 PHP
支付宝服务窗API接口开发php版本
2016/07/20 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
用javascript操作xml
2006/11/04 Javascript
使用jquery给input和textarea设定ie中的focus
2008/05/29 Javascript
javascript 特殊字符串
2009/02/25 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
jquery 问答知识整理
2010/02/11 Javascript
如何使用Jquery获取Form表单中被选中的radio值
2013/08/09 Javascript
js输出数据精确到小数点后n位代码
2016/07/02 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
微信小程序 icon组件详细及实例代码
2016/10/25 Javascript
Nodejs进阶:基于express+multer的文件上传实例
2016/11/21 NodeJs
详解javascript表单的Ajax提交插件的使用
2016/12/29 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
python字符类型的一些方法小结
2016/05/16 Python
python使用selenium实现批量文件下载
2019/03/11 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
django 通过url实现简单的权限控制的例子
2019/08/16 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
Python xlrd/xlwt 创建excel文件及常用操作
2020/09/24 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
萨克斯第五大道精品百货店: Saks Fifth Avenue
2017/04/28 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
工业设计专业推荐信
2013/10/29 职场文书
应届生英语教师求职信
2013/11/05 职场文书
财务信息服务专业自荐书范文
2014/02/08 职场文书