@ziuchen/favicon-utils
v1.2.0
Published
A set of utilities for working with favicons in web applications.
Readme
@ziuchen/favicon-utils
A set of utilities for working with favicons in web applications.
Install
npm i @ziuchen/favicon-utils -SUsage
基本用法
import { getFavicon } from '@ziuchen/favicon-utils';
getFavicon("https://example.com")
.then(result => {
console.log('Favicon data:', result.data); // Base64 encoded favicon data URL
console.log('Source URL:', result.sourceUrl);
console.log('Method:', result.method);
})
.catch(error => {
console.error('Error fetching favicon:', error);
});缓存配置
使用 localStorage 缓存 (默认)
import { getFavicon } from '@ziuchen/favicon-utils';
const result = await getFavicon('https://github.com', {
cache: true // 使用 localStorage 缓存
});使用自定义存储
import { getFavicon, type StorageLike } from '@ziuchen/favicon-utils';
// 实现 StorageLike 接口
class MemoryStorage implements StorageLike {
private store = new Map<string, string>();
getItem(key: string): string | null {
return this.store.get(key) || null;
}
setItem(key: string, value: string): void {
this.store.set(key, value);
}
removeItem(key: string): void {
this.store.delete(key);
}
}
const memoryStorage = new MemoryStorage();
const result = await getFavicon('https://github.com', {
cache: memoryStorage
});使用异步存储 (如 Redis)
class AsyncStorage implements StorageLike {
async getItem(key: string): Promise<string | null> {
// 从 Redis 等异步存储获取
return await redis.get(key);
}
async setItem(key: string, value: string): Promise<void> {
// 存储到 Redis 等异步存储
await redis.set(key, value);
}
async removeItem(key: string): Promise<void> {
await redis.del(key);
}
}
const asyncStorage = new AsyncStorage();
const result = await getFavicon('https://github.com', {
cache: asyncStorage
});Development
Publish to NPM registry:
pnpm publish --access=public --no-git-checks