基于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 得到文件后缀名的思路及实现
May 09 Javascript
js中传递特殊字符(+,&)的方法
Jan 16 Javascript
Javascript中的方法链(Method Chaining)介绍
Mar 15 Javascript
jQuery获取同级元素的简单代码
Jul 09 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 Javascript
javascript删除html标签函数cIsHTML
Jan 09 Javascript
利用jQuery实现滑动开关按钮效果(附demo源码下载)
Feb 07 Javascript
JS检测window.open打开的窗口是否关闭
Jun 25 Javascript
webpack源码之loader机制详解
Apr 06 Javascript
layui radio性别单选框赋值方法
Aug 15 Javascript
微信小程序 scroll-view 实现锚点跳转功能
Dec 12 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_xmlhttp 乱码问题解决方法
2009/08/07 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php中使用array_filter()函数过滤空数组的实现代码
2014/08/19 PHP
php通过function_exists检测函数是否存在的方法
2015/03/18 PHP
PHP实现的json类实例
2015/07/28 PHP
PHP模板引擎Smarty之配置文件在模板变量中的使用方法示例
2016/04/11 PHP
PHP加密技术的简单实现
2016/09/04 PHP
PHP+redis实现微博的推模型案例分析
2019/07/10 PHP
js获取url参数的使用扩展实例
2007/12/29 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
jquery实现在页面加载完毕后获取图片高度或宽度
2014/06/16 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
JS日期加减,日期运算代码
2015/11/05 Javascript
JS实现图片高亮展示效果实例
2015/11/24 Javascript
移动端横屏的JS代码(beta)
2016/05/16 Javascript
jQuery 3 中的新增功能汇总介绍
2016/06/12 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能
2016/12/23 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
基于python list对象中嵌套元组使用sort时的排序方法
2018/04/18 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
调试Django时打印SQL语句的日志代码实例
2019/09/12 Python
golang/python实现归并排序实例代码
2020/08/30 Python
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
介绍一下结构化程序设计方法和面向对象程序设计方法的区别
2012/06/27 面试题
农村婚礼证婚词
2014/01/10 职场文书
三下乡活动方案
2014/01/31 职场文书
经典洗发水广告词
2014/03/13 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
领导班子在批评与自我批评座谈会上的发言
2014/09/28 职场文书
2015年业务工作总结范文
2015/04/10 职场文书
2015年信贷员工作总结
2015/04/28 职场文书
MySQL系列之六 用户与授权
2021/07/02 MySQL