基于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 相关文章推荐
使Ext的Template可以解析二层的json数据的方法
Dec 22 Javascript
javaScript 读取和设置文档元素的样式属性
Apr 14 Javascript
设为首页加入收藏兼容360/火狐/谷歌/IE等主流浏览器的代码
Mar 26 Javascript
JS、jQuery中select的用法详解
Apr 21 Javascript
浅谈jQuery添加的HTML,JS失效的问题
Oct 05 Javascript
jquery插件bootstrapValidator数据验证详解
Nov 09 Javascript
angularjs $http实现form表单提交示例
Jun 09 Javascript
JS中Object对象的原型概念基础
Jan 29 Javascript
对vue v-if v-else-if v-else 的简单使用详解
Sep 29 Javascript
原生js实现移动端Touch轮播图的方法步骤
Jan 03 Javascript
在vue中使用echars实现上浮与下钻效果
Nov 08 Javascript
springboot+vue实现文件上传下载
Nov 17 Vue.js
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加MYSQL服务器
2006/10/09 PHP
PHP程序员最常犯的11个MySQL错误小结
2010/11/20 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
基于PHP实现数据分页显示功能
2016/05/26 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
2017/09/26 PHP
thinkphp3.2框架中where条件查询用法总结
2019/08/13 PHP
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
js设置文本框中焦点位置在最后的示例代码(简单实用)
2014/03/04 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
js实现拉幕效果的广告代码
2015/09/02 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
微信小程序 欢迎页面的制作(源码下载)
2017/01/09 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
[原创]jQuery实现合并/追加数组并去除重复项的方法
2018/04/11 jQuery
vue项目上传Github预览的实现示例
2018/11/06 Javascript
JavaScript解析及序列化JSON的方法实例分析
2019/01/04 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
Vue中rem与postcss-pxtorem的应用详解
2019/11/20 Javascript
js实现秒表计时器
2019/12/16 Javascript
python统计字符串中指定字符出现次数的方法
2015/04/04 Python
介绍Python的@property装饰器的用法
2015/04/28 Python
深入理解Python中的内置常量
2017/05/20 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
Pycharm配置autopep8实现流程解析
2020/11/28 Python
html5 移动端视频video的android兼容(去除播放控件、全屏)
2020/03/26 HTML / CSS
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
Clarisonic美国官网:科莱丽声波洁面仪
2017/10/12 全球购物
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
园林技术个人的自我评价
2014/02/15 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
西柏坡观后感
2015/06/08 职场文书
2019单位介绍信怎么写
2019/06/24 职场文书
python中Tkinter 窗口之输入框和文本框的实现
2021/04/12 Python
tensorflow中的数据类型dtype用法说明
2021/05/26 Python
redis protocol通信协议及使用详解
2022/07/15 Redis