🏠 Portfolio 项目总结
总结一下使用Nextjs部署github page时遇到的img标签的路径问题
diff --git a/404.html b/404.html index 138130922..cc1548a2f 100644 --- a/404.html +++ b/404.html @@ -1 +1 @@ -
总结一下使用Nextjs部署github page时遇到的img标签的路径问题
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
© Musher 2019 - 2024
powered by nobelium
总结一下使用Nextjs部署github page时遇到的img标签的路径问题
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
© Musher 2019 - 2024
powered by nobelium
/** @type {import('next').NextConfig} */
+Portfolio 项目总结 🏠 Portfolio 项目总结
dateMay 29, 2024slugsci-fi-title-generatorstatusPublishedtagsReactNext.jsWebsitesummary总结一下使用Nextjs部署github page时遇到的img标签的路径问题typePost静态资源路径问题
/** @type {import('next').NextConfig} */
const isProd = process.env.NODE_ENV === "production";
const nextConfig = {
output: "export",
@@ -23,4 +23,4 @@
run: ${{ steps.detect-package-manager.outputs.runner }} next build
env:
NODE_ENV: production
- NEXT_PUBLIC_ASSET_PREFIX: /Portofolio
一些环境体操
- 为什么需要使用
(process.env.NEXT_PUBLIC_ASSET_PREFIX || "")
,而不是在dev环境下将NEXT_PUBLIC_ASSET_PREFIX
这个变量设为空?因为根据我的观察,只要你试图把一个环境变量设为空,他就会变成undefined
,所以干脆就这么写了
- 这个basePath也是,他只会更改你的项目的基本地址,不会自动更改你的静态资源的路径,也就是说如果把basePath设为
/Portofolio
,你本地的开发环境地址就会从127.0.0.1:3000变成127.0.0.1:3000/Portofolio,
- assetPrefix也是同理,没什么卵用,听起来像是能给你的静态资源加个前缀,但是没用
关于basePath和assetPrefix
basePath
该选项用于在一个子路径下部署项目,他主要在两种场景下生效:- Links:当使用
next/link
和next/router
时,会自动添加basePath,也就是说<Link href="/about">About Page</Link>
会输出<a href="/docs/about">About Page</a>
(basePath=’/docs’
)
- Image:当使用
next/image
时,需要手动添加basePath,就像我做的那样
assetPrefix
该选项仅针对_next/static
下的静态js css资源,不会影响public下的资源,当然,这个选项还是要设的,不然可能css和js也会因为指向根目录而找不到可能的另一种方式:自定义ImageLoader
使用next/image
时,可以通过自定义imageloader的方式,使用一个函数来返回对应的路径,这个函数就可以对src进行路径拼接等处理,以避免出现(process.env.NEXT_PUBLIC_ASSET_PREFIX || "") + icon
这样不优雅的代码
© Musher 2019 - 2024
powered by nobelium
\ No newline at end of file
+ NEXT_PUBLIC_ASSET_PREFIX: /Portofolio
(process.env.NEXT_PUBLIC_ASSET_PREFIX || "")
,而不是在dev环境下将NEXT_PUBLIC_ASSET_PREFIX
这个变量设为空?因为根据我的观察,只要你试图把一个环境变量设为空,他就会变成undefined
,所以干脆就这么写了/Portofolio
,你本地的开发环境地址就会从127.0.0.1:3000变成127.0.0.1:3000/Portofolio,next/link
和next/router
时,会自动添加basePath,也就是说<Link href="/about">About Page</Link>
会输出<a href="/docs/about">About Page</a>
(basePath=’/docs’
)next/image
时,需要手动添加basePath,就像我做的那样_next/static
下的静态js css资源,不会影响public下的资源,当然,这个选项还是要设的,不然可能css和js也会因为指向根目录而找不到next/image
时,可以通过自定义imageloader的方式,使用一个函数来返回对应的路径,这个函数就可以对src进行路径拼接等处理,以避免出现(process.env.NEXT_PUBLIC_ASSET_PREFIX || "") + icon
这样不优雅的代码© Musher 2019 - 2024
powered by nobelium
© Musher 2019 - 2024
powered by nobelium
© Musher 2019 - 2024
powered by nobelium
© Musher 2019 - 2024
powered by nobelium
© Musher 2019 - 2024
powered by nobelium
© Musher 2019 - 2024
powered by nobelium
© Musher 2019 - 2024
powered by nobelium
© Musher 2019 - 2024
powered by nobelium
© Musher 2019 - 2024
powered by nobelium