基于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插件教程
Aug 25 Javascript
javascript模版引擎-tmpl的bug修复与性能优化分析
Oct 23 Javascript
灵活应用js调试技巧解决样式问题的步骤分享
Mar 15 Javascript
HTML5canvas 绘制一个圆环形的进度表示实例
Dec 16 Javascript
JavaScript手风琴页面制作
May 17 Javascript
关于jquery form表单序列化的注意事项详解
Aug 01 jQuery
使用async-validator编写Form组件的方法
Jan 10 Javascript
详解如何用babel转换es6的class语法
Apr 03 Javascript
vue系列之requireJs中引入vue-router的方法
Jul 18 Javascript
javaScript实现游戏倒计时功能
Nov 17 Javascript
JavaScript变量提升和严格模式实例分析
Jan 27 Javascript
JavaScript原型继承和原型链原理详解
Feb 04 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 utf-8编码问题,utf8编码,数据库乱码,页面显示输出乱码
2013/04/08 PHP
javascript 写类方式之八
2009/07/05 Javascript
javascript innerHTML使用分析
2010/12/03 Javascript
Jquery中的CheckBox、RadioButton、DropDownList的取值赋值实现代码
2011/10/12 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
jQuery中replaceAll()方法用法实例
2015/01/16 Javascript
javascript中Date()函数在各浏览器中的显示效果
2015/06/18 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
利用Jquery队列实现根据输入数量显示的动画
2016/09/01 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
jQueryUI Sortable 应用Demo(分享)
2017/09/07 jQuery
vue实现模态框的通用写法推荐
2018/02/26 Javascript
JS判断字符串是否为整数的方法--简单的正则判断
2018/07/23 Javascript
详解VUE项目中安装和使用vant组件
2019/04/28 Javascript
Vue之Mixins(混入)的使用方法
2019/09/24 Javascript
vue实现滚动鼠标滚轮切换页面
2020/12/13 Vue.js
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
浅析Python多线程下的变量问题
2015/04/28 Python
python进行文件对比的方法
2018/12/24 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
python模拟实现斗地主发牌
2020/01/07 Python
CSS3属性box-shadow使用指南
2014/12/09 HTML / CSS
MUGLER官方网站:蒂埃里·穆勒香水
2019/11/26 全球购物
毕业生动漫设计求职信
2013/10/11 职场文书
计算机专业学生的自我评价
2013/12/15 职场文书
单位实习证明怎么写
2014/01/17 职场文书
运动会入场词60字
2014/02/15 职场文书
综合素质自我评价怎么写
2014/09/14 职场文书
超市创业计划书
2014/09/15 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书
高一语文教学反思
2016/02/16 职场文书
vue backtop组件的实现完整代码
2021/04/07 Vue.js
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
Vue组件更新数据v-model不生效的解决
2022/04/02 Vue.js