基于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 相关文章推荐
jQuery基于当前元素进行下一步的遍历
May 20 Javascript
JavaScript 面向对象与原型
Apr 10 Javascript
JS实现双击编辑可修改状态的方法
Aug 14 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
jquery操作checkbox火狐下第二次无法勾选的解决方法
Oct 10 Javascript
解析AngularJS中get请求URL出现的跨域问题
Dec 01 Javascript
js Date()日期函数浏览器兼容问题解决方法
Sep 12 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
Aug 24 Javascript
js jquery 获取某一元素到浏览器顶端的距离实现方法
Sep 05 jQuery
React项目动态设置title标题的方法示例
Sep 26 Javascript
Openlayers实现点闪烁扩散效果
Sep 24 Javascript
vue.js 使用原生js实现轮播图
Apr 26 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和.net中des加解密的实现方法
2013/02/27 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
mac pecl 安装php7.1扩展教程
2019/10/17 PHP
[原创]网络复制内容时常用的正则+editplus
2006/11/30 Javascript
javascript 正则替换 replace(regExp, function)用法
2010/05/22 Javascript
使用 JScript 创建 .exe 或 .dll 文件的方法
2011/07/13 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
网站内容禁止复制和粘贴、另存为的js代码
2014/02/26 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
详解Angular2中Input和Output用法及示例
2017/05/21 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
详解webpack4之splitchunksPlugin代码包分拆
2018/12/04 Javascript
利用Angular2的Observables实现交互控制的方法
2018/12/27 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
[01:15:18]2014 DOTA2国际邀请赛中国区预选赛 LGD VS Speed Gaming.cn
2014/05/22 DOTA
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
Django实现web端tailf日志文件功能及实例详解
2019/07/28 Python
python自动化测试三部曲之request+django实现接口测试
2020/10/07 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
美术专业个人自我评价
2014/01/18 职场文书
超市中秋节活动方案
2014/02/12 职场文书
《美丽的彩虹》教学反思
2014/02/25 职场文书
三八妇女节活动总结
2014/05/04 职场文书
给校长的建议书600字
2014/05/15 职场文书
企业优秀员工事迹材料
2014/05/28 职场文书
美术社团活动总结
2014/06/27 职场文书
五一促销活动总结
2014/07/01 职场文书
清洁工岗位职责
2015/02/13 职场文书
django 认证类配置实现
2021/11/11 Python