我记得在 Next.js 12 中,
dependencies
和 devDependencies
仍然遵循这个 answer 中的规则。但现在,当我输入 pnpm create next-app
时,所有已安装的依赖项(无论它们仅用于开发还是既用于开发又用于生产)都在 dependencies
中。
// Next 12
"dependencies": {
"next": "12.1.2",
"react": "17.0.2",
"react-dom": "17.0.2"
},
"devDependencies": {
"@types/node": "17.0.23",
"@types/react": "17.0.43",
"@types/react-dom": "17.0.14",
"eslint": "8.12.0",
"eslint-config-next": "12.1.2",
"typescript": "4.6.3"
}
// Next 13
"dependencies": {
"@types/node": "18.11.9",
"@types/react": "18.0.25",
"@types/react-dom": "18.0.8",
"eslint": "8.27.0",
"eslint-config-next": "13.0.2",
"next": "13.0.2",
"react": "18.2.0",
"react-dom": "18.2.0",
"typescript": "4.8.4"
}
Next.js 13 会自动为我进行缩小吗?我是否应该违背
create-next-app
的建议,手动将它们分开?我在文档中找不到答案。
正如 @kelvin 在评论中提到的,Vercel 的一名成员已明确表示:
嗨,这是预期的。如果您托管在 Vercel 等平台上或使用输出:“standalone”,Next.js 不依赖于依赖项与 devDependency。
所以你的问题的正确答案是:
Next.js 13 会为我自己进行缩小吗?
是的,它会为你缩小,而且似乎它不依赖于
devDependencies
来实现它。
我是否应该手动将它们分开,不顾 create-next-app 的建议?
不,根据 Balázs Orbán 的说法,你不应该这样做,或者至少不需要这样做。但我认为,由于 next.js 不需要它,因此也不会被禁止,因为许多官方示例仍在将它们分开。
请注意,对于不使用 next.js 的 React 应用程序(以及基于 npm 和纱线包管理器的其他类型的应用程序),
dependencies
和 devDependencies
之间的分离仍然是必要的。
注意: Kelvin已经回答了。但作为评论,它有点隐藏。我将其作为答案发布,并附有更多解释,只是为了突出显示那些像我一样通过搜索到达这里的人的答案。
这可能是一个错误
应该是这个
"dependencies": {
"@next/font": "13.1.1",
"next": "13.1.1",
"react": "18.2.0",
"react-dom": "18.2.0"
},
"devDependencies": {
"@types/node": "18.11.17",
"@types/react": "18.0.26",
"@types/react-dom": "18.0.10",
"eslint": "8.30.0",
"eslint-config-next": "13.1.1",
"typescript": "4.9.4"
}
请注意,截至目前
@next/font
也已自动安装
过去确实如此,但我今天刚刚尝试了 create-next-app - 现在 dependency 和 devDependency 单独列出。
这是来自我的
package.json
文件:
"dependencies": {
"react": "^18",
"react-dom": "^18",
"next": "14.0.3"
},
"devDependencies": {
"typescript": "^5",
"@types/node": "^20",
"@types/react": "^18",
"@types/react-dom": "^18",
"autoprefixer": "^10.0.1",
"postcss": "^8",
"tailwindcss": "^3.3.0",
"eslint": "^8",
"eslint-config-next": "14.0.3"
}