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螺旋动画效果的具体实例
Nov 15 Javascript
Flash图片上传组件 swfupload使用指南
Mar 14 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
Apr 20 Javascript
BootStrap selectpicker
Jun 20 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
Feb 14 Javascript
ES6学习教程之对象字面量详解
Oct 09 Javascript
jquery实现动态添加附件功能
Oct 23 jQuery
解决JQuery的ajax函数执行失败alert函数弹框一闪而过问题
Apr 10 jQuery
微信小程序如何引用外部js,外部样式,公共页面模板
Jul 23 Javascript
jQuery实现提交表单时不提交隐藏div中input的方法
Oct 08 jQuery
详解Angular cli配置过程记录
Nov 07 Javascript
create-react-app中添加less支持的实现
Nov 15 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程序员面试 切忌急功近利(更需要注重以后的发展)
2010/09/01 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
表单提交时自动复制内容到剪贴板的js代码
2007/03/16 Javascript
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
2010/04/29 Javascript
js查错流程归纳
2012/05/04 Javascript
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
js取整数、取余数的方法
2014/05/11 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
JavaScript使用function定义对象并调用的方法
2015/03/23 Javascript
Java Mybatis框架入门基础教程
2015/09/21 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
2015/11/17 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
Bootstrap BootstrapDialog使用详解
2017/02/17 Javascript
Webpack性能优化 DLL 用法详解
2017/08/10 Javascript
JS简单添加元素新节点的方法示例
2018/02/10 Javascript
Element UI 自定义正则表达式验证方法
2018/09/04 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
Jquery+AJAX实现无刷新上传并重命名文件操作示例【PHP后台接收】
2020/05/29 jQuery
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
jQuery实现电梯导航模块
2020/12/22 jQuery
python设计模式大全
2016/06/27 Python
详解Python如何生成词云的方法
2018/06/01 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
简单了解Python生成器是什么
2019/07/02 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
北京奥运会口号
2014/06/21 职场文书
工商管理本科生求职信
2014/07/13 职场文书
道路施工安全责任书
2014/07/24 职场文书
2016年基层党支部书记公开承诺书
2016/03/25 职场文书
Golang日志包的使用
2022/04/20 Golang