我为Next.js设置了动态路由。文件夹结构是[lan]/[... slug].tsx,我知道在Webpack中我们可以为每个页面设置多个条目。在Next.js中,我们还可以使用以下内容自定义Webpack设置:
module.exports = {
webpack (config) {
return merge(config, {
entry () {
return config.entry().then((entry) => {
return Object.assign({}, entry, { myentry: './test'
})
})
}
}
}
}
字符串
我很好奇如何设置Webpack,使每个页面都成为一个入口点,并将slug作为chucnk ID名称,因为我在这里使用动态路由。
我尝试一个接一个地添加入口点。是的,它可以工作。我想弄清楚如何通过动态路线实现这一目标。
或者可以一页一页地导出所有资源吗?我的意思是,我希望导出的输出像下面的文件夹结构:
例如,对于URL /en/blog/life-blog,我希望所有静态文件都导出到 *en-blog-life-blog文件夹 *,这样每个页面都可以有自己的静态HTML内容。
1条答案
按热度按时间kx1ctssn1#
在Next.js中,您可以为使用动态路由的每个页面安排多个入口点。但是,需要注意的是,Next.js抽象了webpack配置,以提供更简单、更精简的开发体验。要实现所需的行为,您需要自定义webpack配置。
要使用动态路由为每个页面创建单独的入口点,并使用slug作为块ID名称,您可以执行以下步骤:
1.在Next.js项目中安装
@next/webpack-contrib
包:字符串
1.如果尚未在项目的根目录下创建
next.config.js
文件,请执行此操作。1.在
next.config.js
中,导入所需的包:型
1.使用
withMultipleEntry
定义自定义配置。在入口配置中,可以通过name
变量访问页面路径:型
通过这种设置,每个动态页面都有自己的入口点,slug将用作块ID名称。
关于为每个页面单独导出所有资源,Next.js在构建过程中为每个页面自动生成静态HTML文件。默认情况下,输出目录将是
/out
,但您可以通过在Next.js配置中设置outDir
选项来更改它。下面是一个示例,说明如何修改输出目录,使每个页面都有单独的文件夹:
型
使用此配置,每个页面都将在
out
目录中拥有自己的文件夹,该页面的所有静态HTML文件和资源都将包含在该文件夹中。outDir
选项中的[path]
标记将替换为页面的URL路径。