@petnow/ui

中文文档
5.1.0发布于 2026/11/02TypeScriptES Module

사내 웹 프로젝트에서 쓰는 공용 컴포넌트 라이브러리다. React 19와 Tailwind CSS v4를 쓰는 소비 레포를 전제로 한다.

原始使用文档
文档目录4 节
  1. 사용 방법
  2. 구조
  3. 개발
  4. 배포

@petnow/ui

사내 웹 프로젝트에서 쓰는 공용 컴포넌트 라이브러리다. React 19와 Tailwind CSS v4를 쓰는 소비 레포를 전제로 한다.

사용 방법

  1. 설치. Tailwind CSS v4.1 이상이 peer dependency다.

    pnpm add @petnow/ui
    
  2. 소비 레포의 메인 CSS에서 Tailwind를 한 번 import하고, 그 뒤에 패키지 CSS를 import한다.

    @import "tailwindcss";
    @import "@petnow/ui/tailwind.css";
    

    @petnow/ui/tailwind.css는 토큰·유틸리티를 추가하고 패키지 dist를 @source로 등록한다. Tailwind, 폰트, base 스타일, shadcn 변수, 다크 모드 설정은 넣지 않는다. 이것들은 소비 레포가 정한다.

  3. v0 Radio나 .scrollbar, .popup-scrollbar, .ja-break-all, .global-break-all 클래스를 쓰면 일반 CSS도 import한다.

    import "@petnow/ui/dist/index.css";
    

    이 CSS는 components 레이어에 있어서 소비 레포 utility로 덮을 수 있고, import 위치에 영향을 받지 않는다.

  4. 컴포넌트를 쓴다.

    import { CTAButton } from "@petnow/ui";
    // 또는 개별 경로
    import { CTAButton } from "@petnow/ui/v1/cta-button";
    

Petify 테마는 상위 요소에 petify 클래스를 붙이면 v1 시맨틱 컬러가 바뀐다.

구조

@petnow/ui
├── tailwind.css                  - 소비 레포가 import하는 Tailwind 엔트리 (v0 토큰은 deprecated)
├── petnow-design-system-v1.css   - v1 토큰(ref·시맨틱 컬러, 타이포그래피)
├── index.ts                      - 패키지 엔트리
├── src
│   ├── components
│   │   ├── ui - 내부 전용 primitive (export하지 않음)
│   │   ├── v0 - 기존 컴포넌트 (기능 추가 없이 유지)
│   │   └── v1 - 현재 컴포넌트와 아이콘
│   ├── styles/components.css - dist/index.css로 복사되는 일반 CSS
│   ├── index.css             - Storybook 엔트리
│   └── utils
├── test
│   ├── css - 소비 레포 방식으로 패키지 CSS를 빌드해 보는 테스트
│   ├── v0
│   └── v1
└── docs
    ├── adr
    └── migration

개발

Node 버전은 mise.toml로 고정한다. pnpm은 package.json의 packageManager를 따른다.

mise install
pnpm i
pnpm storybook        # http://localhost:6006
pnpm jest
pnpm build            # tsc + vite 라이브러리 빌드 + dist/index.css 복사

배포

npm Trusted Publishing(OIDC)으로 배포한다. GitHub Actions가 발급하는 OIDC 토큰을 쓰므로 NPM_TOKEN 같은 레지스트리 토큰을 관리하지 않는다.

  1. PR을 만들어 main에 merge한다. PR에서는 테스트, 포맷 검사, 빌드, Storybook 빌드가 돈다.
  2. semver에 맞춰 v* 태그를 push한다(예: v5.0.0). .github/workflows/publish-npm.yaml이 태그 버전으로 package.json을 맞춰 npm에 배포하고, 버전 커밋을 main에 남긴다.
  3. 하위 호환을 깨는 변경은 CHANGELOG.md와 docs/migration/에 적는다.

版本与发布记录

@petnow/ui 共发布 92 个版本,首次发布于 2024/04/25;过去 12 个月发布了 20 个版本。

版本发布日期距今
5.1.0latest2026/11/021 天前
5.0.12026/10/295 天前
5.0.02026/10/295 天前
4.1.92026/10/286 天前
4.1.82026/07/313 个月前
4.1.72026/06/254 个月前

关于 @petnow/ui 的常见问题

@petnow/ui 是什么?

■■■■■■■■■■■■■■■■■■■React 19 / /顺风CSS / / v4 / /

如何安装 @petnow/ui?

在项目目录运行 npm install @petnow/ui,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^19.0.0)、react-dom(^19.0.0)、tailwindcss(^4.1.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@petnow/ui 支持 TypeScript 吗?

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

@petnow/ui 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@petnow/ui 可以商用吗?

@petnow/ui 使用 未声明 许可。package.json 没有声明许可证。没有许可证的代码默认保留全部权利,商用前请联系作者或查看仓库中的 LICENSE 文件。以上为概括,不构成法律意见,请以许可原文为准。

@petnow/ui 还在维护吗?

最新版本 5.1.0 发布于 2026/11/02(1 天前);至今共发布 92 个版本,其中过去 12 个月发布了 20 个;首次发布于 2024/04/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。