npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

fangyi-layer-core

v0.1.0

Published

Nuxt media layer for path mapping and CDN URL generation

Readme

fangyi-layer-core

一个用于 Nuxt 4 的媒体资源 layer,提供路径映射与 CDN URL 生成能力。

安装

pnpm add fangyi-layer-core

主工程配置(nuxt.config.ts)

在主工程 nuxt.config.ts 中通过 extends 引入 layer,并通过 mediaLayer 配置默认 CDN 与路径映射。

export default defineNuxtConfig({
  extends: ["fangyi-layer-core"],

  mediaLayer: {
    defaultCdnBase: "https://cdn.example.com",
    pathMap: [
      { from: "/images/webp2/", to: "/assets/images/webp/" },
      { from: "/images/", to: "/assets/images/" },
      { from: "/video/", to: "/assets/video/" },
    ],
  },

  runtimeConfig: {
    public: {
      mediaCdn: process.env.NUXT_PUBLIC_MEDIA_CDN || "",
    },
  },
});

环境变量说明(runtimeConfig.public.mediaCdn)

runtimeConfig.public.mediaCdn 建议通过环境变量注入:

process.env.NUXT_PUBLIC_MEDIA_CDN;

当该值非空时,会优先作为最终 CDN 基础地址。

useMediaCdn 用法

const { getImageUrl, getVideoUrl, transformPath } = useMediaCdn();

const imageUrl = getImageUrl("/images/webp2/a.webp");
// 可能输出:https://cdn.example.com/assets/images/webp/a.webp

const videoUrl = getVideoUrl("/video/demo.mp4");
// 可能输出:https://cdn.example.com/assets/video/demo.mp4

const mappedPath = transformPath("/images/webp2/c.webp");
// 输出:/assets/images/webp/c.webp

说明:

  • getImageUrl / getVideoUrl 会执行路径映射,并在有 CDN 基础地址时拼接完整 URL。
  • transformPath 只做路径映射,不拼接 CDN 域名。

默认 pathMap 规则

未显式配置 mediaLayer.pathMap 时,默认使用以下三条规则:

[
  { from: "/images/webp2/", to: "/assets/images/webp/" },
  { from: "/images/", to: "/assets/images/" },
  { from: "/video/", to: "/assets/video/" },
];

mediaCdn 与 defaultCdnBase 优先级

最终 CDN 基础地址计算规则:

cdnBase = mediaCdn 非空 ? mediaCdn : defaultCdnBase

即:

  • mediaCdn:运行时覆盖值(优先级高,适合按环境切换)。
  • defaultCdnBase:layer 默认值或主工程 mediaLayer 配置值(兜底)。