构建部署
这篇笔记我们学习如何构建部署NextJS工程,以及如何进行多环境配置。
以生产模式运行NextJS
NextJS工程的npm script中,包含了命令build和start,分别对应构建和启动服务端。
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
}
执行命令npm run build后,NextJS会将构建结果输出到工程根目录的.next文件夹中。此时我们执行npm start即可运行NextJS服务端了。
使用pm2启动工程
在实际生产环境中,NodeJS一般以pm2、nodemon等守护进程方式部署,这些NodeJS进程管理器会在NodeJS进程意外终止及时拉起进程,避免生产环境不可用。
pm2 start npm -- start
执行上述启动命令,即可以pm2守护进程方式启动NextJS。
如果使用Docker部署,我们需要以前台方式创建pm2进程,因此启动命令可以写为:
pm2 start npm --no-daemon -- start
多副本部署
多副本部署时有一点需要注意,我们应构建一次部署到多个服务器上,而不是在多个服务器上分别构建,建议通过Docker等方式进行部署。
多环境配置
另一个常见的需求是多环境配置,我们的一些配置项可能在开发、测试、生产环境有不同的参数,NextJS中可以通过环境变量配置文件进行配置,这些配置依赖于NodeJS的环境变量NODE_ENV。这里我们直接介绍配置的最佳实践,NodeJS工程的NODE_ENV支持几个标准的环境名:development、test、production,相关的配置文件也要遵循这些标准命名,不要打破这个约定。我们的工程根目录中,可以设置如下几个配置文件。
|_ .env
|_ .env.development
|_ .env.production
|_ .env.local
我们记住以下3条规则:
- 如果我们以
npm run dev启动工程,NextJS会默认设置当前环境为development,如果我们以npm start启动工程,NextJS会默认设置当前环境为production。 - 多个配置文件的优先级从高到低依次是
.env.local、.env.$(NODE_ENV)、.env,如果存在相同的环境变量配置,高优先级的配置会覆盖低优先级的配置。 .env存放各个环境通用的配置,.env.$(NODE_ENV)存放环境单独的配置,.env.local存放密码等敏感信息,它不应提交到版本控制系统。
至此,我们应该可以正确的进行多环境配置了。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。