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 相关文章推荐
兼容多浏览器的字幕特效Marquee的通用js类
Jul 20 Javascript
jQuery 核心函数以及jQuery对象
Mar 23 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
Jul 05 Javascript
jquery淡化版banner异步图片文字效果切换图片特效
Apr 08 Javascript
判断日期是否能跨月查询的js代码
Jul 25 Javascript
浅谈JQuery+ajax+jsonp 跨域访问
Jun 25 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 Javascript
简单实现bootstrap选项卡效果
Feb 08 Javascript
JavaScript中undefined和null的区别
May 03 Javascript
详解微信小程序 相对定位和绝对定位
May 11 Javascript
详解JS实现简单的时分秒倒计时代码
Apr 25 Javascript
15分钟学会vue项目改造成SSR(小白教程)
Dec 17 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/01 无线电
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
PHP设计模式之工厂模式实例总结
2017/09/01 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
Laravel 之url参数,获取路由参数的例子
2019/10/21 PHP
Javascript条件判断使用小技巧总结
2008/09/08 Javascript
jQuery淡入淡出元素让其效果更为生动
2014/09/01 Javascript
提升PHP安全:8个必须修改的PHP默认配置
2014/11/17 Javascript
基于jQuery+Cookie实现的防止刷新的在线考试倒计时
2015/06/19 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
2016/06/12 Javascript
微信小程序 switch组件详解及简单实例
2017/01/10 Javascript
js实现日期显示的一些操作(实例讲解)
2017/07/27 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
单线程JavaScript实现异步过程详解
2020/05/19 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
python的dict,set,list,tuple应用详解
2014/07/24 Python
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
python实现flappy bird小游戏
2018/12/24 Python
python文字和unicode/ascll相互转换函数及简单加密解密实现代码
2019/08/12 Python
Python sys模块常用方法解析
2020/02/20 Python
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
HTML5 Canvas的常用线条属性值总结
2016/03/17 HTML / CSS
个人优缺点自我评价
2014/01/27 职场文书
死亡证明书样本说明
2014/10/18 职场文书
2014年大班保育员工作总结
2014/12/02 职场文书
家长会欢迎词
2015/01/23 职场文书
公积金贷款承诺书
2015/04/30 职场文书
严以律己专题学习研讨会发言材料
2015/11/09 职场文书
2016学校先进集体事迹材料
2016/02/29 职场文书
假期读书倡议书3篇
2019/08/19 职场文书
使用Canvas绘制一个游戏人物属性图
2022/03/25 Javascript