首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >生产中的nextjs自定义服务目录

生产中的nextjs自定义服务目录
EN

Stack Overflow用户
提问于 2022-03-04 15:13:45
回答 2查看 331关注 0票数 1

问题:当我在生产服务器上运行next build时,页面在构建时是不受样式限制的。我想做的是:

  1. 将应用程序构建到build目录
  2. build移动到build-public
  3. 服务于build-public的应用程序。

我不想为这个简单的任务设置一个自定义服务器。

我的package.json scripts部分:

代码语言:javascript
运行
复制
"scripts": {
    "dev": "next dev -p 3002",
    "build": "next build",
    "start": "next start -p 3002"
  },

我的next.config.js

代码语言:javascript
运行
复制
module.exports = {
  basePath: '',
  distDir: 'build', // dir to build
  dir: 'build-public', // serve from build-public. 'Dir' option is not working.
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-24 22:06:51

tl/dr:见第3段。

  1. 每次启动脚本时,替换 Next.js使用distDir配置选项作为服务器目录。因此,如果我将distDir设置为build构建我的应用程序,那么我就可以在build目录中获得包。接下来,我将distDir更改为build-public, and run Next start, so my project is served from build。

next.config.js

代码语言:javascript
运行
复制
module.exports = {
...
  distDir: 'build' // build to 'build' directory. Then change distDir to 'build-public', so it will serve from 'build-public'.
...
}
  1. 服务于嵌套目录,我可以运行next serve ./build-public,Nextjs将在./build-public/build中搜索应用程序构建。因此,在next build之后,我需要将build文件夹移动到build-public/build并运行next serve ./build-public

package.json

代码语言:javascript
运行
复制
...
"scripts": {
    "build": "next build",
    "start": "next start ./nested-dir -p 3011"
  },
...
  1. 在next.config.js中导出一个函数。参见这里的更高级示例:nextjs-示例

next.config.js

代码语言:javascript
运行
复制
const {
  PHASE_PRODUCTION_BUILD,
  PHASE_PRODUCTION_SERVER,
} = require("next/constants");

module.exports = (phase) => {
  let distDir = "";
  if (phase == PHASE_PRODUCTION_BUILD) {
    distDir = "build";
  } else if (phase == PHASE_PRODUCTION_SERVER) {
    distDir = "build-public";
  }

  return {
    ... 
    distDir,
    ....
  }
}
票数 1
EN

Stack Overflow用户

发布于 2022-10-07 14:28:00

可以在next.config.js中使用环境变量,并在运行build命令之前设置该环境变量:

代码语言:javascript
运行
复制
    // next.config.js

    module.exports = {
      distDir: process.env.BUILD_DIR || 'build-public',
    }
代码语言:javascript
运行
复制
    // package.json
    
    "scripts": {
      "build": "BUILD_DIR=build next build",
    }
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71353415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档