Next.js应用打包发布,脱离next cli单独使用

Next.js应用的默认生产环境启动命令是next start,这个有比较严苛的要求,比如代码必须在当前目录下,不方便用pm2管理,无法从自定义script启动等,甚至,如果想要发布一个cli应用,并让用户从自定义的命令行启动,这种方式也是无法实现的。

其实,next可以用express来启动(以中间件的方式),但是官方文档似乎没有找到。

新建一个app.js文件用于启动next应用

const next = require('next');
const express = require('express');
const app = next({ dev: false, dir: __dirname}); // dir即为.next目录所在路径
const handler = app.getRequestHandler(app);
const port = 3000;

app.prepare().then(function() {
    const server = express();
    server.use(handler); // nextjs应用初始化(prepare)完成后,以中间件的形式注入express
    // 此处插入任何自定义的命令,这是一个标准的express instance
    server.listen(port, function() {
        console.log(`App running on http://localhost:${port}`);
    });
});

使用的时候,首先执行next build,会得到一个.next文件夹,在下面的目录结构下,dir无需改动,只要设置为__dirname即可。

--app
----.next
----app.js

文章原始链接:https://sijie.wang/posts/nextjs-publish/

本站文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请保留原始链接