Next.js 图像代理
Next.js 的图像代理 使得在下/图像组件中使用动态域成为可能.
动机
这个库可以使用 next/image 有动态域。 如果与外部提供者合作,如Facebook,Instagram,Etsy,Medium等,图像往往有动态子域. 例如,你可能会从 scontent-akl1-1.cdninstagram.com 和第二个来自 scontent-akl3-1.cdninstagram.com。虽然将它们逐个添加到配置中可以暂时工作,但并不可靠,因为它们可随时改变。 整个问题可以通过增加正则图案来解决 next.config.js但不幸的是 Next.js不支持这一点.
如果你想了解关于Next.js在盒子外支持它的讨论,请参见此 讨论情况 还有这个 拉请求
你必须记住,有一些骗子:
- 如果你的regex不够严格,你可以建立安全漏洞
- 由于它是一个代理,它会增加带宽成本. 但是,除非你在做大型项目(即每月要求数以百万计),否则增幅将是微不足道的
* 安装
$ npm i --save @blazity/next-image-proxy
# or
$ yarn add @blazity/next-image-proxy
使用时间
设置非常简单, 您只需要添加一个新的 API 路由, 输出一个函数 。 终分名自取.
// pages/api/imageProxy.ts
import { withImageProxy } from '@blazity/next-image-proxy'
export default withImageProxy({ whitelistedPatterns: [/^https?:\/\/(.*).medium.com/] })
而现在您要使用的图像前缀 :
import NextImage from 'next/image'
export function SomeComponent() {
const actualImageUrl = 'https://cdn-images-1.medium.com/max/1024/1*xYoAR2XRmoCmC9SONuTb-Q.png'
return <NextImage src={`/api/imageProxy?imageUrl=${actualImageUrl}`} width={700} height={300} />
}
捐款
贡献使得开放源代码社区成为了如此惊人的学习,激励和创造的地方. 你所做的任何贡献 非常感谢。 。 。 .
- 如果您有关于添加或删除项目的建议,请随意 打开一个问题 ,或编辑后直接创建拉动请求 读取 备有必要修改的文件.
- 为每个建议创建单个公关.
创建拉请求
- 项目叉
- 创建您的特性分支( E)
git checkout -b feature/AmazingFeature(中文(简体) ) - 提交更改( E)
git commit -m 'Add some AmazingFeature'(中文(简体) ) - 推动到该处
git push origin feature/AmazingFeature(中文(简体) ) - 打开拉请求