使用pkg打包你的Next.js应用

spark1e ·

0. pkg是真的很方便

pkg是Vercel推出的一款打包工具,与Serverless正好相反,他的目的是打包为单文件、多平台可用的可执行文件。

对于一般的node应用,按文档例子配置即可,对于Next.js应用,需要进行以下的额外配置。

1. 配置

1.1 Install & Config

首先全局安装pkg

npm install pkg -g
# or
# yarn global add pkg

pkg可以通过命令行传参,也可以在package.json里进行配置,由于next.js略微复杂,这里示例在package.json

  "pkg": {
    "assets": [
      ".next/**/*",
      ".env",
      "public/**/*"
    ],
    "scripts": [
      ".next/server/**/*.js"
    ],
    "targets": [
      "node14-linux-x64"
    ],
    "outputPath": "dist"
  },
  "bin": "index.js",
  "main": "index.js"

这里的index.js是官方的Custom Server方式,pkg需要指定入口,因此不能使用原来的next包内的server。

bin和main设置一个即可。

2. pack

打包过程基本不需要介入,我这里涉及了node的sharp包,需要额外引入,按照这个issue的方案,复制相关的静态文件(或者dll)

请注意,如果使用了.env请务必引入在assets中。

使用pkg打包你的Next.js应用
本文作者
spark1e
发布于
2021-06-04
许可协议
转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!
评论区 - Powered by Giscus