node相比其它C艹等语言的好处是直接装好node环境后node xxx.js就可以运行了,非常方便。但是这样的话别人就能直接看到源代码,而且每次部署都需要node环境,并且安装相关的依赖。
此时pkg这个库就能解决介个问题。最近因为项目需求方需要,搞了下这方面的需求。
正确的姿势。例如项目的入口文件是app.js
1、项目根目录下安装pkg
npm i -D pkg
2、打包配置
参考pkg文档。pkg可以在任意系统上打包全平台的可执行文件。例如我的需求是需要打包win64位系统node8环境的包。只需要package.json的scripts下配置。.的话是去读取bin的入口文件。
"pkgwin": "pkg . -t node8-win-x64 -o app",
bin路径
"bin": "./app.js"
需要注意的是pkg只会分析require的文件并打包在一起,如果是动态拼接的路径就不会打包进去。
例如我的项目下有的是开启子进程的代码
const trackWorker = child_process.fork(`${
__dirname}/workers/trackChild.js`);
此时,需要告诉pkg需要手动打包的文件
"pkg": {
"scripts"