问题:当我在生产服务器上运行next build
时,页面在构建时是不受样式限制的。我想做的是:
build
目录build
移动到build-public
build-public
的应用程序。我不想为这个简单的任务设置一个自定义服务器。
我的package.json
scripts
部分:
"scripts": {
"dev": "next dev -p 3002",
"build": "next build",
"start": "next start -p 3002"
},
我的next.config.js
module.exports = {
basePath: '',
distDir: 'build', // dir to build
dir: 'build-public', // serve from build-public. 'Dir' option is not working.
}
发布于 2022-10-24 22:06:51
tl/dr:见第3段。
distDir
配置选项作为服务器目录。因此,如果我将distDir
设置为build
构建我的应用程序,那么我就可以在build
目录中获得包。接下来,我将distDir
更改为build-public, and run
Next start, so my project is served from
build。next.config.js
module.exports = {
...
distDir: 'build' // build to 'build' directory. Then change distDir to 'build-public', so it will serve from 'build-public'.
...
}
next serve ./build-public
,Nextjs将在./build-public/build
中搜索应用程序构建。因此,在next build
之后,我需要将build
文件夹移动到build-public/build
并运行next serve ./build-public
。package.json
...
"scripts": {
"build": "next build",
"start": "next start ./nested-dir -p 3011"
},
...
next.config.js
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,
....
}
}
发布于 2022-10-07 14:28:00
可以在next.config.js中使用环境变量,并在运行build命令之前设置该环境变量:
// next.config.js
module.exports = {
distDir: process.env.BUILD_DIR || 'build-public',
}
// package.json
"scripts": {
"build": "BUILD_DIR=build next build",
}
https://stackoverflow.com/questions/71353415
复制相似问题