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实现的模拟jquery的animate自定义动画(2.5K)
Jul 20 Javascript
jquery ui dialog ie8出现滚动条的解决方法
Dec 06 Javascript
判断滚动条到底部的JS代码
Nov 04 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
Mar 06 Javascript
jQuery图片切换插件jquery.cycle.js使用示例
Jun 16 Javascript
jquery实现textarea输入框限制字数的方法
Jan 15 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
Mar 18 Javascript
javascript 实现动态侧边栏实例详解
Nov 11 Javascript
JS实现太极旋转思路分析
Dec 09 Javascript
js实现简单的二级联动效果
Mar 09 Javascript
源码分析Vue.js的监听实现教程
Apr 23 Javascript
vue实现设置载入动画和初始化页面动画效果
Oct 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
收藏的一个php小偷的核心程序
2007/04/09 PHP
PHP 第二节 数据类型之数组
2012/04/28 PHP
typecho插件编写教程(五):核心代码
2015/05/28 PHP
jQuery 过滤not()与filter()实例代码
2012/05/10 Javascript
jquery插件制作 图片走廊 gallery
2012/08/17 Javascript
JavaScript中的关键字"VAR"使用详解 分享
2013/07/31 Javascript
JS将数字转换成三位逗号分隔的样式(示例代码)
2014/02/19 Javascript
javascript校验价格合法性实例(必须输入2位小数)
2014/05/05 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
JavaScript实现设置默认日期范围为最近40天的方法分析
2017/07/12 Javascript
Angularjs的启动过程分析
2017/07/18 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
vue请求服务器数据后绑定不上的解决方法
2019/10/30 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
原生js实现html手机端城市列表索引选择城市
2020/06/24 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
python实现的解析crontab配置文件代码
2014/06/30 Python
python list元素为tuple时的排序方法
2018/04/18 Python
TensorFLow 变量命名空间实例
2020/02/11 Python
python实现邮件循环自动发件功能
2020/09/11 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
HTML5无刷新改变当前url的代码
2017/03/15 HTML / CSS
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
新浪网技术部笔试题
2016/08/26 面试题
营销与策划应届生求职信
2013/11/04 职场文书
学生实习推荐信范文
2013/11/26 职场文书
开会迟到检讨书
2014/01/08 职场文书
缓刑人员的思想汇报
2014/01/11 职场文书
反腐倡廉警示教育活动心得体会
2014/09/04 职场文书
小学副班长竞选稿
2015/11/21 职场文书
Java 多态分析
2022/04/26 Java/Android
NASA 机智号火星直升机拍到了毅力号设备碎片
2022/04/29 数码科技
git中cherry-pick命令的使用教程
2022/06/25 Servers
Python如何加载模型并查看网络
2022/07/15 Python