react-spa-comp
v1.0.0
Published
My react SPA component library
Readme
react-spa-comp
Uzycie biblioteki
Import komponentow idzie z glownego wejscia paczki:
import { Footer } from 'react-spa-comp';
import 'react-spa-comp/styles.css';Style z CSS Modules sa podczas buildu wypychane do jednego pliku styles.css.
To oznacza, ze konsument biblioteki powinien jawnie zaimportowac react-spa-comp/styles.css, jesli chce dostac gotowe style komponentow.
Publikacja paczki
Minimalny release flow dla tej biblioteki:
- Zwieksz wersje w
package.json. - Uruchom
npm run build. - Uruchom
npm run type-check. - Uruchom
npm run pack:check. - Opublikuj paczke przez
npm publish.
Paczkę publikuje npm jako publiczną, bo manifest zawiera publishConfig.access = public.
Do paczki trafiają tylko artefakty z dist, plik README.md i LICENSE.
Jak dodać nowy komponent do biblioteki?
Utwórz katalog i pliki komponentu:
- Utwórz katalog:
src/components/NazwaKomponentu/ - Dodaj plik komponentu:
src/components/NazwaKomponentu/NazwaKomponentu.tsx - (Opcjonalnie) Dodaj plik stylów:
NazwaKomponentu.module.css - Dodaj plik eksportu:
src/components/NazwaKomponentu/index.ts
- Utwórz katalog:
Przykład prostego komponentu:
src/components/MyButton/MyButton.tsx
import React from 'react'; import styles from './MyButton.module.css'; export interface MyButtonProps { children?: React.ReactNode; onClick?: () => void; } export const MyButton: React.FC<MyButtonProps> = ({ children, onClick }) => ( <button className={styles.myButton} onClick={onClick}> {children} </button> );src/components/MyButton/index.ts
export { MyButton } from './MyButton'; export type { MyButtonProps } from './MyButton';Zarejestruj komponent w centralnym eksporcie:
Dodaj eksport w pliku
src/components/index.ts:export * from './MyButton';Zarejestruj komponent w głównym wejściu biblioteki:
Upewnij się, że w
src/index.tsjest:export * from './components';(Opcjonalnie) Dodaj wpis do exports w package.json: Dodaj go tylko wtedy, gdy build rzeczywiscie generuje osobne pliki JS dla tego komponentu:
"exports": { ".": { ... }, "./MyButton": { "import": "./dist/components/MyButton/MyButton.js", "require": "./dist/components/MyButton/MyButton.cjs", "types": "./dist/components/MyButton/MyButton.d.ts" } }Przy obecnej konfiguracji tego repo publiczne API idzie przez glowne wejscie paczki, a style przez osobny eksport
./styles.css.Dodaj typy dla CSS Modules (jeśli używasz): Jeśli pojawia się błąd z importem plików .module.css, dodaj plik
src/global.d.ts:declare module '*.module.css' { const classes: { [key: string]: string }; export default classes; }(Opcjonalnie) Dodaj plik testowy i stories:
MyButton.test.tsx— testy komponentuMyButton.stories.tsx— dokumentacja w Storybook
Zbuduj bibliotekę:
npm run build
Podsumowanie:
- Każdy komponent ma własny katalog, plik z kodem, eksport i (opcjonalnie) style.
- Wszystkie komponenty eksportuj przez
src/components/index.tsisrc/index.ts. - Import komponentow dla konsumenta idzie z glownego wejscia paczki, a style z
react-spa-comp/styles.css.
