2025.05.19

GatsbyでGifを動作させる(TypeScript)

Shuji
- Gatsby
- TypeScript
はじめに
gatsbyでgif画像をアニメーションしている状態で表示させたいという場面があり、普通に../images/
フォルダにgifファイルを置いても動作できなかったので、やり方を調べてみました。
本家ドキュメントによると
ドキュメントにはimagesではなく、../gifs/
フォルダに置いてとありました。
../images/
に入れた場合gatsby-plugin-image
で最適化の対象となりますが、gifアニメーションはその最適化を受けられないようです。
../gifs/
(フォルダ名はなんでもよいようですが)に入れた場合、通常の静的アセットとして扱われるということです。
import * as React from 'react'
import Layout from '../components/layout'
import otterGIF from '../gifs/otter.gif'
const AboutPage = () => (
return (
<Layout>
<img src={otterGIF} alt="Otter dancing with a fish" />
</Layout>
)
)
export default AboutPage;
型定義
ただ、typescriptの場合では型エラーが出るため、
Cannot find module '../gifs_test/audio.gif' or its corresponding type declarations.ts(2307)
以下のようにしておくと、.gif ファイルを 型安全にインポート できるようになります。
declare module "*.gif" {
const value: string
export default value
}
これで、Gatsby で GIF をスムーズに動作させることができました。
その他の記事
Other Articles
FastAPI × React LeafletでGoogle Earth Engineの衛星データを扱う
Google Earth Engine で衛生データを表示する
DifyのワークフローをNode Cronで定期実行
Difyの外部ナレッジAPIでNotion APIのデータを取得
Dify × NotionでAIチャットボットを構築する
Gatsby × Tailwindcss × ダークモードでSEO対策
[Gatsby.js] gatsby-plugin-canonical-urlsでcanonicalタグを生成する
[Gatsby.js] gatsby-plugin-robots-txtでrobot.txtを生成する
[Gatsby.js] gatsby-plugin-sitemapでサイトマップを生成する