基于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 相关文章推荐
javascript 字符 Escape,encodeURI,encodeURIComponent
Jul 09 Javascript
js的一些常用方法小结
Jun 29 Javascript
在js文件中如何获取basePath处理js路径问题
Jul 10 Javascript
JavaScript中的slice()方法使用详解
Jun 06 Javascript
微信小程序 小程序制作及动画(animation样式)详解
Jan 06 Javascript
JavaScript中英文字符长度统计方法示例【按照中文占2个字符】
Jan 17 Javascript
简单谈谈axios中的get,post方法
Jun 25 Javascript
BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传、预览、提交的导入Excel数据操作步骤
Aug 07 Javascript
node.js实现的装饰者模式示例
Sep 06 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
Sep 29 Javascript
JS开发自己的类库实例分析
Aug 28 Javascript
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 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
php约瑟夫问题解决关于处死犯人的算法
2015/03/23 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
2015/12/22 PHP
详解Laravel设置多态关系模型别名的方式
2019/10/17 PHP
JavaScript与Image加载事件(onload)、加载状态(complete)
2011/02/14 Javascript
最短的javascript:地址栏载入脚本代码
2011/10/13 Javascript
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
JS 实现导航栏悬停效果(续)
2013/09/24 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
js创建对象的方法汇总
2016/01/07 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
Jil,高效的json序列化和反序列化库
2017/02/15 Javascript
Angularjs中ng-repeat的简单实例
2017/08/25 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
JavaScript算法学习之冒泡排序和选择排序
2019/11/02 Javascript
Python使用bs4获取58同城城市分类的方法
2015/07/08 Python
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
详解Python list 与 NumPy.ndarry 切片之间的对比
2017/07/24 Python
Django的分页器实例(paginator)
2017/12/01 Python
Django-Rest-Framework 权限管理源码浅析(小结)
2018/11/12 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
2019/01/29 Python
Xadmin+rules实现多选行权限方式(级联效果)
2020/04/07 Python
CSS3制作圆角图片和椭圆形图片
2016/07/08 HTML / CSS
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
办公室岗位职责
2014/02/12 职场文书
成语的广告词
2014/03/19 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
电影地道战观后感
2015/06/04 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
Python字典和列表性能之间的比较
2021/06/07 Python
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技
win11系统中dhcp服务异常什么意思? Win11 DHCP服务异常修复方法
2022/04/08 数码科技
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS