@code-hike/classer

中文文档
0.3.0发布于 2022/03/04MITTypeScriptESM + CJS零依赖近 30 天下载 4.3万

Classer is a tool from Code Hike

原始使用文档

Classer is a tool from Code Hike

A little package to make React component libraries interoperable with most styling solutions. (See this twitter thread explaining why this is useful)

You write your library code like this:

// foo-library code
import { useClasser } from "@code-hike/classer"

export function Foo({ classes }) {
  const c = useClasser("foo", classes)
  return (
    <div className={c("container")}>
      <h1 className={c("title")}>Hello</h1>
      <p className={c("description")}>World</p>
      <img
        className={c("img")}
        src="https://placekitten.com/200/200"
      />
    </div>
  )
}

And the library consumers use it like this in their apps:

import { Foo } from "foo-library"

const classes = {
  "foo-title": "my-app-blue",
  "foo-img": "rounded-corners some-border",
}

function MyApp() {
  return <Foo classes={classes} />
}

MyApp renders this HTML:

<div class="foo-container">
  <h1 class="foo-title my-app-blue">Hello</h1>
  <p class="foo-description">World</p>
  <img
    class="foo-img rounded-corners some-border"
    src="https://placekitten.com/200/200"
  />
</div>

Examples:

Context

You can also do this (to avoid passing classes to nested components):

// foo-library code
import {
  useClasser,
  ClasserProvider,
} from "@code-hike/classer"

export function Foo({ classes }) {
  return (
    <ClasserProvider classes={classes}>
      <FirstChild />
      <SecondChild />
    </ClasserProvider>
  )
}

function FirstChild() {
  const c = useClasser("foo-first")
  return <h1 className={c("title")}>Hi</h1>
}

function SecondChild() {
  const c = useClasser("foo-second")
  return <h1 className={c("title")}>Ho</h1>
}
import { Foo } from "./foo-library"
import styles from "./app.module.css"

const classes = {
  "foo-title": styles.myTitle,
  "foo-img": styles.myImage,
}

function MyApp() {
  return <Foo classes={classes} />
}

License

MIT

版本与发布记录

@code-hike/classer 共发布 119 个版本,首次发布于 2021/02/18;过去 12 个月发布了 0 个版本。

版本发布日期距今
0.3.0latest2022/03/044 年前
0.3.0-next.29next2022/03/034 年前
0.3.0--canary.143.e149ea9.0canary2022/03/034 年前
0.3.0-next.282022/03/014 年前
0.3.0--canary.139.45d5e45.02022/03/014 年前
0.3.0-next.272022/02/244 年前

关于 @code-hike/classer 的常见问题

@code-hike/classer 是什么?

Classer is a tool from Code Hike

如何安装 @code-hike/classer?

在项目目录运行 npm install @code-hike/classer,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^16.8.3 || ^17 || ^18)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@code-hike/classer 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@code-hike/classer 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@code-hike/classer 可以商用吗?

@code-hike/classer 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@code-hike/classer 的下载量有多少?

根据 npm 官方下载统计,@code-hike/classer 在 2026/10/10 – 2026/11/08 这 30 天内被下载 42,835 次,日均约 1,428 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@code-hike/classer 还在维护吗?

最新版本 0.3.0 发布于 2022/03/04(4 年前);至今共发布 119 个版本,其中过去 12 个月发布了 0 个;首次发布于 2021/02/18。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。