基于node打包可执行文件工具_Pkg使用心得分享


Posted in Javascript onJanuary 24, 2018

项目地址

基于node打包可执行文件工具_Pkg使用心得分享

这个项目很神奇,直接将node.js项目打包成windows可以直接执行的exe文件(也支持FreeBSD、linux、macos、arm系统),甚至不需要安装Node.js,且无须修改你项目中的任何代码!

首先安装pkg

npm install -g pkg

然后在项目目录下执行

pkg entrance.js

即可打包linux,macos,win3个平台的可执行文件。entrance.js为你node项目的入口文件。

如果只想打包windows下的exe,则加上-t参数。win即为打包成windows平台下的exe文件,具体可选参数参见项目目录

pkg -t win entrance.js

稍等片刻后项目目录下就会生成打包好的entrance.exe文件。

pkg会自动从入口文件开始查找依赖的文件并全数打包进去,无须修改项目里的任何代码。

其他

pkg可以根据package.json下的配置进行打包,默认入口文件为bin指向的文件。
执行
pkg .

或是

pkg package.json

即可自动按照package.json的配置打包。

//package.json
{
 //其他配置项
 "bin": "service.js",//入口文件
 "pkg": {
 "scripts": [
  "build/**/*.js"//需要打包进来的其他js文件,可添加多个
 ],
 "assets": [
  "dist/**/*"//静态文件的目录,可添加多个
 ]
 }
}

注意:静态文件需要在项目中将文件的引用换成

path.join(__dirname, 'dist')

的形式,才可以正常打包,否则可能会读取不到。

示例

使用vue-cli建立项目,并使用npm run build将你的项目编译生成静态文件到dist目录下。这些都是vue-cli自带的内容,不再赘述。

在项目目录下新建一个service.js文件,并添加以下代码,在本地起一个express静态服务器,使你能够在本地访问你的网站(部署到线上也是类似)

基于node打包可执行文件工具_Pkg使用心得分享

//service.js
const express = require('express');
const app = express();
const path = require('path');
 
app.use(express.static(path.join(__dirname, 'dist')));//注意这里使用path.join(__dirname, 'dist')而不是'dist',虽然在命令行中执行起来效果是一样的,不过pkg打包会无法识别到dist目录
 
var server = app.listen(8081, function () {
 var host = server.address().address
 var port = server.address().port
 console.log(`AIbuy agents server start successfully on http://${host}:${port}`)
})

此时你可以在控制台执行

node service.js

来启动你的服务器了,启动完成后,浏览器访问http://localhost:8081/即可查看你的网站。

接下来我们使用将service.js和dist目录打包成一个exe文件,方便他人使用

首先安装pkg

npm install -g pkg

然后修改package.json,添加bin(如果不是service.js的话)和pkg项

{
 //其他配置项
 "bin": "service.js",//指定入口文件
 "pkg": {
 "assets": [
  "dist/**/*"//指定要打包的静态文件目录
 ]
 }
}

然后在项目目录下执行

pkg -t win package.json

完成后即生成一个exe文件,双击启动即相当于执行node service.js,然后你浏览器里(http://localhost:8081/)就能访问打包好的项目了!也不需要提前安装node,给老板演示很方便有木有!

以上这篇基于node打包可执行文件工具_Pkg使用心得分享就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js压缩利器
Feb 20 Javascript
javascript实现汉字转拼音代码分享
Apr 20 Javascript
JavaScript实现广告的关闭与显示效果实例
Jul 02 Javascript
javascript手风琴下拉菜单实现代码
Nov 12 Javascript
Bootstrap布局方式详解
May 27 Javascript
全屏滚动插件fullPage.js使用实例解析
Oct 21 Javascript
浅谈Angular中ngModel的$render
Oct 24 Javascript
jQuery制作图片旋转效果
Feb 02 Javascript
详解webpack 入门总结和实践(按需异步加载,css单独打包,生成多个入口文件)
Jun 20 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
Jun 22 Javascript
详解nuxt路由鉴权(express模板)
Nov 21 Javascript
解决vue打包后vendor.js文件过大问题
Jul 03 Javascript
Angular整合zTree的示例代码
Jan 24 #Javascript
使用classList来实现两个按钮样式的切换方法
Jan 24 #Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 #Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
Jan 23 #Javascript
简述vue中的config配置
Jan 23 #Javascript
JS实现多物体运动的方法详解
Jan 23 #Javascript
JS运动改变单物体透明度的方法分析
Jan 23 #Javascript
You might like
支持oicq头像的留言簿(二)
2006/10/09 PHP
php基础学习之变量的使用
2011/06/09 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
use jscript List Installed Software
2007/06/11 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
推荐17个优美新鲜的jQuery的工具提示插件
2012/09/14 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
JavaScript对象学习小结
2015/09/02 Javascript
js中substring和substr两者区别和使用方法
2015/11/09 Javascript
JavaScript的removeChild()函数用法详解
2015/12/27 Javascript
JavaScript使用FileReader实现图片上传预览效果
2020/03/27 Javascript
详解weex默认webpack.config.js改造
2018/01/08 Javascript
Python计算两个日期相差天数的方法示例
2017/05/23 Python
python3.4用函数操作mysql5.7数据库
2017/06/23 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
java判断三位数的实例讲解
2019/06/10 Python
Django REST Framework 分页(Pagination)详解
2020/11/30 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
Html5 Canvas动画基础碰撞检测的实现
2018/12/06 HTML / CSS
亚马逊印度站:Amazon.in
2017/10/15 全球购物
欧洲当代手工玻璃和瓷器的领先品牌:LSA International
2018/06/03 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
我们没有写servlet的构造方法,那么容器是怎么创建servlet的实例呢
2013/04/24 面试题
简短证婚人证婚词
2014/01/09 职场文书
环境科学专业教师求职信
2014/07/12 职场文书
财政局个人总结
2015/03/04 职场文书
工程质检员岗位职责
2015/04/08 职场文书
航班延误投诉信
2015/07/02 职场文书
运动会宣传语
2015/07/13 职场文书
家电创业计划书
2019/08/05 职场文书
Python快速优雅的批量修改Word文档样式
2021/05/20 Python