React 컴포넌트를 npm 모듈로 배포하여 사용해 본다.
신규 프로젝트 생성
React 모듈 개발을 위한 React 프로젝트를 생성한다.
1
| npx create-react-app [new project name]
|
React 빌드를 위한 모듈을 설치
1
| yarn add -D @babel/cli @babel/preset-react
|
src/lib
폴더 생성 후 배포할 컴포넌트 추가
1
2
3
4
5
6
7
| import React from "react";
const TC = () => {
return <span>배포용 컴포넌트</span>;
};
export default TC;
|
.gitignore
에 배포 제외 파일 설정
1
2
3
4
5
| src
demo
.babelrc
webpack.config.js
public
|
package.json
파일 수정
- presets 설정 추가
1
2
3
4
5
| "babel": {
"presets": [
"@babel/preset-react"
]
}
|
- 빌드 script 추가
1
2
3
4
5
6
7
| "scripts": {
"start": "craco start",
"build": "craco build",
"test": "craco test",
"eject": "react-scripts eject",
"publish:npm": "rm -rf dist && mkdir dist && babel src/lib -d dist --copy-files"
}
|
peerDependencies
설정
react 관련 모듈은 참조하는 프로젝트에서 중복시 오류를 뱉는 경우가 있어 peerDependencies로 넣어준다.1
2
3
4
5
6
7
8
9
| "peerDependencies": {
"@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.3.0",
"@testing-library/user-event": "^13.5.0",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "^4.0.1",
"web-vitals": "^2.1.4"
}
|
컴포넌트 빌드
프로젝트 배포
배포한 모듈 사용 (import)
1
2
3
4
5
6
7
8
9
10
| import React from "react";
import TC from "@niceharu/tc";
const Home = () => {
return (
<TC></TC>
);
};
export default Home;
|