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 相关文章推荐
精选的10款用于构建良好易用性网站的jQuery插件
Jan 23 Javascript
js操作iframe的一些方法介绍
Jun 25 Javascript
JS实现1000以内被3或5整除的数字之和
Feb 18 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
使用vue.js2.0 + ElementUI开发后台管理系统详细教程(二)
Jan 21 Javascript
javascript实现日期三级联动下拉框选择菜单
Dec 03 Javascript
微信小程序对接七牛云存储的方法
Jul 30 Javascript
Angularjs实现页面模板清除的方法
Jul 20 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
Sep 11 Javascript
layer页面跳转,获取html子节点元素的值方法
Sep 27 Javascript
详解vue中在循环中使用@mouseenter 和 @mouseleave事件闪烁问题解决方法
Apr 07 Javascript
仿照Element-ui实现一个简易的$message方法
Sep 14 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(6) 面向对象
2010/02/16 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
phpmailer发送邮件之后,返回收件人是否阅读了邮件的方法
2014/07/19 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
PHP autoload使用方法及步骤详解
2020/09/05 PHP
jQuery Ajax之load()方法
2009/10/12 Javascript
JavaScript 32位整型无符号操作示例
2013/12/08 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
javascritp添加url参数将参数加入到url中
2014/09/25 Javascript
详解AngularJS中的表格使用
2015/06/16 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
第一次接触神奇的Bootstrap基础排版
2016/07/26 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
vue 手机物理监听键+退出提示代码
2020/09/09 Javascript
[59:26]DOTA2上海特级锦标赛D组资格赛#1 EG VS VP第二局
2016/02/28 DOTA
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
Python实现遍历目录的方法【测试可用】
2017/03/22 Python
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
python图书管理系统
2020/04/05 Python
PowerBI和Python关于数据分析的对比
2019/07/11 Python
python3应用windows api对后台程序窗口及桌面截图并保存的方法
2019/08/27 Python
Python Selenium参数配置方法解析
2020/01/19 Python
Django配置跨域并开发测试接口
2020/11/04 Python
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
恶意软件的定义
2014/11/12 面试题
企业面试题试卷附带答案
2015/12/20 面试题
班长演讲稿范文
2014/04/24 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
北京故宫的导游词
2015/01/31 职场文书
挂职个人工作总结
2015/03/05 职场文书
大学生实习介绍信
2015/05/05 职场文书
工作犯错保证书
2015/05/11 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书