失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > pkg学习--使用pkg打包应用

pkg学习--使用pkg打包应用

时间:2019-05-19 13:58:01

相关推荐

pkg学习--使用pkg打包应用

pkg的学习之旅 ----使用pkg打包Node.js服务小demo

将Node.js打包为可执行文件的工具有pkg、nexe、node-packer、enclose等,面对项目需要,所以在学习pkg,看到相关文章,觉得这个很不错,自己记录下,以便下次使用便捷。

pkg的打包原理简单来说,就是将js代码以及相关的资源文件打包到可执行文件中,然后劫持fs里面的一些函数,使它能够读到可执行文件中的代码和资源文件。例如,原来的require(’./a.js’)会被劫持到一个虚拟目录require(’/snapshot/a.js’)。

安装

npm install pkg --save-dev

使用

pkg使用比较简单,执行下pkg -h

pkg --help

就可以基本了解用法,基本语法是:pkg [options] <input>

会出现下面这些内容:

Options:-h, --help output usage information 帮助输出使用信息-v, --version output pkg version --版本输出包装版本-t, --targets comma-separated list of targets (see examples)-c, --configpackage.json or any json file with top-level config--options bake v8 options into executable to run with them on-o, --outputoutput file name or template for several files--out-path path to save output one or more executables-d, --debugshow more information during packaging process [off]-b, --builddon't download prebuilt base binaries, build them--public speed up and disclose the sources of top-level projectExamples:– Makes executables for Linux, macOS and Windows$ pkg index.js– Takes package.json from cwd and follows 'bin' entry$ pkg .– Makes executable for particular target machine$ pkg -t node6-alpine-x64 index.js– Makes executables for target machines of your choice$ pkg -t node4-linux,node6-linux,node6-win index.js– Bakes '--expose-gc' into executable$ pkg --options expose-gc index.js

-t,–目标逗号分隔的目标列表,指定打包的目标平台和Node版本,如-t node6-win-x64,node6-linux-x64,node6-macos-x64可以同时打包3个平台的可执行程序

-c,–config package.json 或任何具有顶级配置的json文件,指定一个JSON配置文件,用来指定需要额外打包脚本和资源文件,通常使用package.json配置。

–option 将V8选项烘焙到可执行文件中以在其上运行

-o,–指定输出可执行文件的名称,但如果用-t指定了多个目标,那么就要用–out-path指定输出的目录;

----out-path 输出一个或多个可执行文件的输出路径

-d,–debug 在打包过程中显示更多信息[off]

-build 不要下载预构建的基本二进制文件,构建它们。

–public 加速并披露顶级项目的来源

<input>可以通过三种方式指定:1.一个脚本文件,例如pkg index.js;2.package.json,例如pkg package.json,这时会使用package.json中的bin字段作为入口文件;3.一个目录,例如pkg .,这时会寻找指定目录下的package.json文件,然后在找bin字段作为入口文件。

使用pkg的最佳实践是:在package.json中的pkg字段中指定打包参数,使用npm scripts来执行打包过程,

{..."bin": "./bin/www","scripts": {"pkg": "pkg . --out-path=dist/"},"pkg": {"scripts": "build/**/*.js","assets": "views/**/*","targets": [...]},...}

scripts和assets用来配置未打包进可执行文件的脚本和资源文件,文件路径可以使用glob通配符*。

链接,参考实例链接

npm官网

实例:

使用vue-cli建立项目,并使用npm run build将你的项目编译生成静态文件到dist目录下。

在项目目录下新建一个service.js文件,并添加以下代码,在本地起一个express静态服务器,使你能够在本地访问你的网站(部署到线上也是类似)

service.js代码示例:

//service.jsconst express = require('express');const app = express();const path = require('path');app.on('ready',function(){console.log('进入页面了')})//注意这里使用path.join(__dirname, 'dist')而不是'dist'// 虽然在命令行中执行起来效果是一样的,不过pkg打包会无法识别到dist目录app.use(express.static(path.join(__dirname, 'dist')));var server = app.listen(8081, function () {var host = server.address().addressvar port = server.address().portconsole.log(`AIbuy agents server start successfully on http://${host}:${port}`)console.log('打包出来了')})

保存后,就可以输入命令行,来启动服务器了,启动完成后,浏览器访问http://localhost:8081/即可查看本地网站。

node service.js

接下来我们使用将service.js和dist目录打包成一个exe文件,方便他人使用

首先全局安装pkg

npm install pkg -g

然后修改package.json,添加bin(如果不是service.js的话)和pkg项

package.json:

然后在项目目录下执行

pkg -t win package.json

完成后即生成一个exe文件,双击启动即相当于执行node service.js,然后你浏览器里(http://localhost:8081/)就能访问打包好的项目了!

见下图:

双击打开这个exe文件,会出现如下界面:

然后就可以根据自己的项目需求进行编码了,这是pkg打包…

如果觉得《pkg学习--使用pkg打包应用》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。