2024.12.10
pnpm dlx create-turbo@latest --example with-tailwind
cd apps
mkdir storybook
cd storybook
pnpm dlx storybook@latest init
rm pnpm-lock.yaml
pnpm install
"scripts": {
"dev": "next dev --port 3000" // 포트는 3000으로 통일
//....
pnpm add @tanstack/react-query @tanstack/react-query-devtools react-hook-form react-icons tailwind-merge
{
"eslint.workingDirectories": [
{
"mode": "auto"
}
],
"editor.codeActionsOnSave": {
"source.organizeImports": "always",
"source.fixAll.eslint": "always"
},
"editor.formatOnSave": true
}
{
"semi": true,
"singleQuote": true,
"trailingComma": "all",
"printWidth": 108,
"tabWidth": 4,
"endOfLine": "auto",
"arrowParens": "always",
"bracketSpacing": true,
"useTabs": false
}
{
"eslint.workingDirectories": [
{
"mode": "auto"
}
],
}
// apps/ 하위 storybook 제외 모든 app의 tailwind.config.ts 파일에서 본 내용 적용
import sharedConfig from '@repo/tailwind-config';
import type { Config } from 'tailwindcss';
const config: Pick<Config, 'content' | 'presets'> = {
content: [
// app content
`src/**/*.{js,ts,jsx,tsx}`,
// 아래 부분을 추가!
'../../packages/shared/*.{js,ts,jsx,tsx}',
],
presets: [sharedConfig],
};
export default config;
{
"name": "@repo/shared",
"version": "0.0.0",
"sideEffects": [
"**/*.css"
],
"files": [
"dist"
],
// 아래 exports 부분 추가됨
"exports": {
"./styles.css": "./src/styles.css",
"./components": "./src/components/index.ts"
},
"license": "MIT",
"scripts": {
"build": "tailwindcss -i ./src/styles.css -o ./dist/index.css",
"lint": "eslint src/",
"dev": "tailwindcss -i ./src/styles.css -o ./dist/index.css --watch",
"type-check": "tsc --noEmit"
},
"peerDependencies": {
"react": "^18.2.0"
},
"devDependencies": {
"@repo/eslint-config": "workspace:*",
"@repo/tailwind-config": "workspace:*",
"@repo/typescript-config": "workspace:*",
"@types/react": "^18.2.61",
"autoprefixer": "^10.4.18",
"postcss": "^8.4.35",
"tailwindcss": "^3.4.1",
"typescript": "^5.3.3"
}
}
// packages/shared/src/components/index.ts
export { default as Card } from './card';
// 이런 식으로 공통 컴포넌트들 생길 때 마다 계속 익스포트를 추가해줘야 함