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 相关文章推荐
javascript:void(0)是什么意思示例介绍
Nov 17 Javascript
JavaScript中的原型链prototype介绍
Dec 30 Javascript
javascript单例模式的简单实现方法
Jul 25 Javascript
JavaScript类型系统之基本数据类型与包装类型
Jan 06 Javascript
使用Object.defineProperty实现简单的js双向绑定
Apr 15 Javascript
JS获取子窗口中返回的数据实现方法
May 28 Javascript
jQuery命名空间与闭包用法示例
Jan 12 Javascript
AngularJS constant和value区别详解
Feb 28 Javascript
vue-cli 如何打包上线的方法示例
May 08 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
Oct 19 Javascript
vue 强制组件重新渲染(重置)的两种方案
Oct 29 Javascript
JS实现排行榜文字向上滚动轮播效果
Nov 26 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
世界第一个无线广播电台 KDKA
2021/03/01 无线电
php中用foreach来操作数组的代码
2011/07/17 PHP
PHP设计模式之装饰者模式
2012/02/29 PHP
Yii使用find findAll查找出指定字段的实现方法
2014/09/05 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
juqery 学习之三 选择器 层级 基本
2010/11/25 Javascript
javascript查找字符串中出现最多的字符和次数的小例子
2013/10/29 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
详解JavaScript实现设计模式中的适配器模式的方法
2016/05/18 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
JavaScript定义函数的三种实现方法
2017/09/23 Javascript
JavaScript实现点击出现图片并统计点击次数功能示例
2018/07/23 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
vue2.* element tabs tab-pane 动态加载组件操作
2020/07/19 Javascript
[01:04:20]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.29
2020/12/02 DOTA
Django Highcharts制作图表
2016/08/27 Python
Python实现的合并两个有序数组算法示例
2019/03/04 Python
Windows下pycharm创建Django 项目(虚拟环境)过程解析
2019/09/16 Python
python 命名规范知识点汇总
2020/02/14 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
香港化妆品经销商:我的公主
2016/08/05 全球购物
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
GWebs公司笔试题
2012/05/04 面试题
高中生活自我鉴定
2014/01/18 职场文书
企业党员公开承诺书
2014/03/26 职场文书
幼儿园老师寄语
2014/04/03 职场文书
留学顾问岗位职责
2014/04/14 职场文书
武侯祠导游词
2015/02/04 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书
MySQ InnoDB和MyISAM存储引擎介绍
2022/04/26 MySQL
win10电脑关机快捷键是哪个 win10快速关机的几种方法
2022/08/14 数码科技