基于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 学习之旅 (1)
Feb 05 Javascript
基于JQuery的密码强度验证代码
Mar 01 Javascript
网页上的Javascript编辑器和代码格式化
Apr 25 Javascript
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
Vue.js render方法使用详解
Apr 05 Javascript
利用jQuery解析获取JSON数据
Apr 08 jQuery
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
Sep 12 jQuery
VUE-cli3使用 svg-sprite-loader
Oct 20 Javascript
vue项目中使用vue-i18n报错的解决方法
Jan 13 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
Jan 31 Javascript
layui监听工具栏的实例(操作列表按钮)
Sep 10 Javascript
vue props default Array或是Object的正确写法说明
Jul 30 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学习笔记之 函数声明
2011/06/09 PHP
php通过baihui网API实现读取word文档并展示
2015/06/22 PHP
thinkphp 验证码 的使用小结
2017/05/07 PHP
PHP使用glob方法遍历文件夹下所有文件的实例
2018/10/17 PHP
Laravel Eloquent分表方法并使用模型关联的实现
2019/11/25 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
js 全兼容可高亮二级缓冲折叠菜单
2010/06/04 Javascript
jquery对单选框,多选框,文本框等常见操作小结
2014/01/08 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
jQuery对JSON数据进行排序输出的方法
2015/06/24 Javascript
简单实现JS倒计时效果
2016/12/23 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
2017/10/31 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
深入浅析var,let,const的异同点
2018/08/07 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
javascript设计模式 ? 策略模式原理与用法实例分析
2020/04/21 Javascript
详解vue中在父组件点击按钮触发子组件的事件
2020/11/13 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
[03:02]2020完美世界城市挑战赛(秋季赛)总决赛回顾
2021/03/11 DOTA
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python与shell的3种交互方式介绍
2015/04/11 Python
书单|人生苦短,你还不用python!
2017/12/29 Python
python实现学生信息管理系统
2020/04/05 Python
Python使用sqlalchemy模块连接数据库操作示例
2019/03/13 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
Paul’s Boutique官网:英国时尚手袋品牌
2018/03/31 全球购物
Java语言程序设计测试题改错题部分
2014/07/22 面试题
卖房授权委托书样本
2014/10/05 职场文书
副总经理岗位职责
2015/02/02 职场文书
Python的代理类实现,控制访问和修改属性的权限你都了解吗
2022/03/21 Python