我想将我的nextjs
项目构建为开发模式。
我试过喜欢它
包.json
{
...
"scripts": {
"dev": "next",
"build:dev": "set NODE_ENV=development & next build",
"build:prod": "set NODE_ENV=production & next build",
"start:dev": "set NODE_ENV=development & next start",
"start:prod": "set NODE_ENV=production & next start"
}
...
}
Run Code Online (Sandbox Code Playgroud)
下一个.config.js
module.exports = withSass({
env: {
baseUrl: process.env.NODE_ENV === "development" ? "devServerURL": "prodServerURL"
}
});
Run Code Online (Sandbox Code Playgroud)
但我无法实现我想要的。
所以,我尝试了一些改变。
包.json
"scripts": {
"dev": "next",
"build": "next build",
"start:dev": "set NODE_ENV=development & next start",
"start:prod": "set NODE_ENV=production & next start"
}
Run Code Online (Sandbox Code Playgroud)
但它也不起作用。
如何构建next
with 开发模式?
提前致谢。
编辑
我的操作系统是 Windows 10。
2022 年 11 月 23 日更新:
简而言之:
"start:dev": "NODE_ENV=development next start"
你可能需要(在 Windows 上?我不知道):cross-env
"start:dev": "cross-env NODE_ENV=development next start"
现在提供了更具体的文档(也许要求也发生了变化,也可能没有):
...注意:NODE_ENV 允许的值为生产、开发和测试。
...仅允许三 (3) 个值:
- 生产:当您的应用程序在下一个版本中构建时
- 开发:当您的应用程序与下一个开发人员一起运行时
- 测试:当您的应用程序正在测试时(例如笑话)
原答案:
请参阅问题 #9123(2019 年 10 月 18 日) :
NODE_ENV 是一个保留的环境变量,无法更改。唯一有效的值是生产、开发和测试。
如果您需要在不同的生产环境中更改应用程序行为,请使用不同的变量,例如 APP_ENV。
process.env.NODE_ENV
只有 2 个可能的值development
和production
。如果未将其设置为该值,您将遇到各种库边缘情况(尤其是在 node_modules 中),从而获得严重去优化的结果。例如,如果您运行性能测试,如果process.env.NODE_ENV
未设置为生产,您会得到明显更差的结果
.env.dev
.env.prod
.env.local
. 接下来他们将被带到那里。package.json
脚本中。"build-dev": "cp .env.dev .env.local && yarn build",
"build-prod": "cp .env.prod .env.local && yarn build"
Run Code Online (Sandbox Code Playgroud)
此外,
APP_ENV
。development
并production
基于文件。process.env.APP_ENV
根据您的脚本调用进行访问。请记住,process.env.NODE_ENV
将始终出现production
在上述所有 3 个脚本中。并且不要以 nextjs 的构建命令可以检测到的标准格式存储 env 文件。也许使用.env.dev
, .env.stg
,.env.prod
现在是 2023 年中期,我希望有一个简单的解决方案。以下是我从 React/vite 到 Nextjs 的工作原理,有 2 个不同的环境文件。
使用罗德里戈的答案我首先重命名
.env.development
到.env.dev
.env.production
到.env.prod
这样 next.js 不会在构建过程中自动选择它们,但它们保留在本地系统上。
如果我不这样做,那么.env.production
在部署到dev
我不想要的环境期间,优先级就会启动并选择。
接下来我将 package.json 中的脚本修改为
"build":"yarn build"
"predeploy": "cp .env.dev .env.local",
"deploy": "firebase use development && firebase hosting:channel:deploy dev",
"predeployprod": "cp .env.prod .env.local",
"deployprod": "firebase use production && firebase deploy -P production"
Run Code Online (Sandbox Code Playgroud)
简要了解Next JS 优先顺序。
它的作用是基于我的“调用”,无论我是否想要部署到 dev/prod env,它都会为文件提供正确的秘密.env.local
。
例如,假设我想部署到开发人员。我运行yarn deploy
->yarn predeploy
首先自动运行,将我的 dev-secrets 设置为.env.local
. 其次,它运行构建。
你可能想知道 nextjs 的构建命令在哪里?
firebase deploy
负责并在幕后运行它。
如果您不使用 firebase 以下内容就足够了。
"build-dev": "cp .env.dev .env.local && yarn build",
"build-prod": "cp .env.prod .env.local && yarn build"
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5745 次 |
最近记录: |