基于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 相关文章推荐
js 分栏效果实现代码
Aug 29 Javascript
JavaScript1.6数组新特性介绍以及JQuery的几个工具方法
Dec 06 Javascript
jQuery插件实现大图全屏图片相册
Mar 14 Javascript
JS实现动画兼容性的transition和transform实例分析
Dec 13 Javascript
Vue 实用分页paging实例代码
Apr 12 Javascript
浅谈react.js 之 批量添加与删除功能
Apr 17 Javascript
ES6新特性三: Generator(生成器)函数详解
Apr 21 Javascript
利用jQuery实现简单的拖曳效果实例代码
Oct 20 jQuery
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
Oct 25 Javascript
vue引入ueditor及node后台配置详解
Jan 03 Javascript
详解Vue2.0组件的继承与扩展
Nov 23 Javascript
Vue基本使用之对象提供的属性功能
Apr 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
2014/09/10 PHP
JavaScript Perfection kill 测试及答案
2010/03/23 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
jQuery 开发者应该注意的9个错误
2012/05/03 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
jquery获取tagName再进行判断
2014/05/29 Javascript
JavaScript中的全局对象介绍
2015/01/01 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
关于Jquery中的bind(),on()绑定事件方式总结
2016/10/26 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
JS设置CSS样式的方式汇总
2017/01/21 Javascript
JS实现碰撞检测的方法分析
2018/01/19 Javascript
Vue 组件传值几种常用方法【总结】
2018/05/28 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
详解express + mock让前后台并行开发
2018/06/06 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
微信小程序事件对象中e.target和e.currentTarget的区别详解
2019/05/08 Javascript
基于Express框架使用POST传递Form数据
2019/08/10 Javascript
layui 表格操作列按钮动态显示的实现方法
2019/09/06 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
VUE实现Studio管理后台之鼠标拖放改变窗口大小
2020/03/04 Javascript
Python编程实现数学运算求一元二次方程的实根算法示例
2017/04/02 Python
python 实现对数据集的归一化的方法(0-1之间)
2018/07/17 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
Python grequests模块使用场景及代码实例
2020/08/10 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
Rosetta Stone官方网站:语言学习
2019/01/05 全球购物
民间个人借款协议书
2014/09/30 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL
Django框架中视图的用法
2022/06/10 Python