์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- ์ฝ๋ ํฌ๋ฉง
- ์๋ฐ์คํฌ๋ฆฝํธ
- js
- ์๋ฐฉํฅ ์ฐ๊ฒฐ ๋ฆฌ์คํธ
- React
- ์ฝํ
- ์ฝ๋ฉํ ์คํธ
- TypeScript
- ๋ถ์คํธ์บ ํ์น๋ชจ๋ฐ์ผ
- ์๊ณ ๋ฆฌ์ฆ
- ์ด๋ฏธ์ง ์์
- ๋์ ๊ณํ๋ฒ
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์ค
- ๋ธ๋ฃจํธํฌ์ค
- ๋ฆฌ๋์ค ํดํท
- custom hook
- DP
- ์นด์นด์ค์ฑ์ฉ
- ๋ถ์คํธ์ปจํผ๋ฐ์ค
- ์ด๋ถํ์
- Node.js
- Redux toolkit
- icecandidate
- ๋๋๊ทธ ์ด๋ฒคํธ
- ๊ณผ์ ํ ์คํธ
- JavaScript
- router v6
- svgํ์ผ ๋ค๋ฃจ๊ธฐ
- ์นด์นด์ค
- Today
- Total
๐ฅ dev-ruby
TypeScript๋ก npm package์ ๋ฐฐํฌํ๊ธฐ | React Custom hook ๋ฐฐํฌ ๋ณธ๋ฌธ
TypeScript๋ก npm package์ ๋ฐฐํฌํ๊ธฐ | React Custom hook ๋ฐฐํฌ
ruby_s 2022. 12. 30. 20:49์ด๋ฒ์ WebRTC ๊ด๋ จ hook์ ๋ง๋ค์๋๋ฐ, ๊ณต๋ถํ๋ฉด์ ๊ตฌํํ๊ธฐ๊น์ง ์๊ฐ์ด ๊ฝค ๊ฑธ๋ ธ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋์ ๋ด๊ฐ ๋ง๋ ํ ์ npm package์ ์ฌ๋ ค์ ๋ค๋ฅธ ๋ถ๋ค์ด ๋์์ ๋ฐ์ ์ ์์ผ๋ฉด ์ข์ง ์์๊น! ๋ผ๋ ์๊ฐ์ ์ฒ์์ผ๋ก! ์ฌ๋ ค๋ดค๋ค.
https://www.npmjs.com/package/@ruby-s/use-rtc
1. npm ๊ฐ์
npm์ ํจํค์ง๋ฅผ ๋ฑ๋กํ๊ธฐ ์ํด์ https://www.npmjs.com/์์ ๊ฐ์ ํ์.
2. package.json ํ์ผ ์์ฑ
npm init -y
-y ์ต์
ฅ์ผ๋ก ๋ฐ๋ก ๊ธฐ๋ณธ์ ์ธ pakage.json ํ์ผ์ ์์ฑํด์ค๋๋ค.
์ด์ ๋ด ํจํค์ง์ ๋ง๊ฒ ์ค์ ํด์ค๋๋ค.
{
"name": "@ruby-s/use-rtc",
"version": "1.0.0",
"description": "React hook to connect to WebRTC",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"scripts": {
"build": "tsc"
},
"repository": {
"type": "git",
"url": "git+https://github.com/juyeong-s/RTC.git"
},
"author": "juyeong-s",
"license": "MIT",
"keywords": [
"React",
"Hook",
"WebRTC",
"useRTC"
],
"bugs": {
"url": "https://github.com/juyeong-s/RTC/issues"
},
"homepage": "https://github.com/juyeong-s/RTC#readme",
"dependencies": {
"socket.io-client": "^4.5.4",
"typescript": "^4.9.3"
},
"peerDependencies": {
"react": ">=16.8.0",
"react-dom": ">=16.8.0"
},
"devDependencies": {
"@types/node": "^18.11.18",
"@types/react": "^18.0.26"
}
}
name
๊ณ ์ ํ ํจํค์ง๋ช ์ ๋๋ค.
version
ํจํค์ง ๋ฒ์ ์ ๋๋ค. ์ ๋ฐ์ดํธํ ๋๋ง๋ค ๋ฒ์ ์ ๋ค๋ฅด๊ฒ ์ค์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ๊ธฐ์กด์ ๋ฒ์ ์ผ๋ก ๋ค์ ์ฌ๋ฆฌ๋ ค๊ณ ํ ๊ฒฝ์ฐ ์๋ฌ๊ฐ ๋๋ฏ๋ก ์กฐ์ฌํ ๊ฒ.
description
ํจํค์ง ์ค๋ช ์ ๋๋ค.
main
ํ๋ก์ ํธ์์ ๊ธฐ๋ณธ ์ง์
ํ์ผ์ ์ง์ ํ๋ค.
TypeScript์ ๊ฒฝ์ฐ ts ํ์ผ์ ๋น๋ํ ํ ์์ฑ๋ js ํ์ผ์ด ์๋ ์์น๋ก ์ง์ ํด์ฃผ์ด์ผ ํ๋ค.
๋ ๊ฐ์ ๊ฒฝ์ฐ, tsconfig.json ํ์ผ์ ๋น๋๋ ํ์ผ์ด distํด๋ ์์ ์์ฑ๋๋๋ก ์ง์ ํด์ฃผ์์ผ๋ฏ๋ก main์ dist/index.js๋ก ์ง์ ํ๋ค.
// tsconfig.json
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"declaration": true,
"outDir": "./dist",
"strict": true
}
}
npm run build -> dist ํด๋ ์์ js ํ์ผ๋ค ์์ฑ๋จ -> ์ฒ์ ์ง์ ํ ํ์ผ์ main์ ์ง์
types
์ด ์์ฑ์ TypeScript๋ฅผ ์ฌ์ฉํ์ ๊ฒฝ์ฐ์ ํ์ํ๋ค. ์์ ๋ง์ฐฌ๊ฐ์ง๋ก build๋ฅผ ํ๋ฉด distํด๋์ js ํ์ผ๊ณผ .d.ts ํ์ผ์ด ํจ๊ป ์์ฑ๋๋ค.
์ด๋ .d.ts ์์น๋ฅผ ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
scripts
์ด ์์ฑ์ TypeScript๋ฅผ ์ฌ์ฉํ์ ๊ฒฝ์ฐ buildํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ฐ์ผ ๊ฒ ๊ฐ๋ค. build ๋ช ๋ น์ด๋ก tsc ์ปค๋งจ๋๋ฅผ ์ง์ ํด์ tsํ์ผ์ ์ปดํ์ผํ๋๋ก ํ๋ค.
repository
์ฝ๋๊ฐ ์กด์ฌํ๋ ์ฃผ์๋ฅผ ์ง์ ํ๋ฉด ๋๋ค. npm docs๋ก ํจํค์ง ์ ์ฅ์๋ฅผ ์ฐพ์ ์ ์๊ฒ ํด์ค๋ค. ๋ค์๊ณผ ๊ฐ์ด npm ํจํค์ง ์ค๋ฅธํธ์ ๋ณด์ธ๋ค.
author
ํจํค์ง ์ ์์์ ์ด๋ฆ์ ์ง์ ํ๋ค. ์ด๋ฆ๋ง ํด๋ ๋๊ณ , ๋ค์๊ณผ ๊ฐ์ด ํด์ฃผ์ด๋ ๋๋ค.
{
"author": {
"name": "juyeong-s",
"email": "happyu9986@gmail.com",
"url": "http://juyeong-s.com"
}
}
license
๋ผ์ด์ผ์ค๋ฅผ ์ง์ ํ๋ค.
keywords
ํจํค์ง๋ฅผ ๋ํ๋ด๋ ๋ํ์ ์ธ ํค์๋๋ค์ ๋ฐฐ์ด์ ์์๋ค๋ก ์ค์ ํด์ค๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ํ๋จ์ ๋ณด์ ๋๋ค.
bug
ํจํค์ง์ ๋ฌธ์ ๋ ๋ฒ๊ทธ๊ฐ ์์ ๊ฒฝ์ฐ ๋ณด๊ณ ํ ์ ์๋๋ก URL์ ์ง์ ํ๋ค. ๋ณดํต ๊นํ๋ธ ์ด์๋ฅผ ์ฌ๋ฆฌ๋ ๊ฒ ๊ฐ๋ค.
homepage
ํ๋ก์ ํธ ํํ์ด์ง๋ก ์ฐ๊ฒฐ๋๋ URL์ ์ง์ ํ๋ค. ๋ค์๊ณผ ๊ฐ์ด npm ํจํค์ง์ ์ค๋ฅธํธ์ ๋ณด์ธ๋ค.
dependencies
ํจํค์ง์ ๋ฐฐํฌ ์ ํฌํจ๋ ์์กด์ฑ ๋ชจ๋์ ์ง์ ํ๋ค.
peerDependencies
ํจํค์ง์ ํธํ์ฑ ๋ชจ๋์ ์ง์ ํ๋ค.
devDependencies
ํจํค์ง์ ์ง์ ๋์๊ณผ ๊ด๋ จ์ ์์ง๋ง, ์ด๋ฆ ๊ทธ๋๋ก ๊ฐ๋ฐํ ๋ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ํ๋ค. ๋ณดํต ํ
์คํ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ type๊ด๋ จ ๋ชจ๋๋ค์ด ์ฌ๊ธฐ ๋ค์ด๊ฐ๋ค.
๊ฐ๋ฐ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ธฐ ๋๋ฌธ์ ๋ฐฐํฌํ ๋๋ ํฌํจ๋์ง ์๋๋ค.
3. .npmignore ํ์ผ ์ค์
ํจํค์ง์ ๋ฐฐํฌํ์ง ์์ ํ์ผ์ด๋ ํด๋๋ฅผ ์ง์ ํด์ค๋ค.
๋๋ ts๋ก ์์ฑํ๊ธฐ ๋๋ฌธ์ tsํ์ผ์ด ์๋ ํด๋๋ ignoreํด์ฃผ๊ณ , js๋ง ์ฌ๋ฆฌ๋๋ก ํ๋ค.
// .npmignore
src/
.gitignore์๋ ๋น๋๋ js๋ ์ ์ธํ๊ณ tsํ์ผ๋ง ์ฌ๋ฆฌ๋๋ก ํ๋ค.
// .gitignore
node_modules
.env
dist/
4. npm์ ์ฌ๋ฆฌ๊ธฐ
package.json ํ์ผ์ ๋ชจ๋ ์ค์ ํด์ฃผ์๊ณ , ๋ฐฐํฌํ hookํ์ผ๋ ๋ชจ๋ ํฌํจ์์ผฐ๋ค๋ฉด ์ด์ npm ํจํค์ง์ ์ฌ๋ฆด ์ค๋น๊ฐ ๋์๋ค.
js๋ก ์์ฑํ์ ๊ฒฝ์ฐ npm publish๋ก ๋ฐ๋ก ๋ฐฐํฌํ๋ฉด ๋๊ณ ,
ts๋ก ์์ฑํ์ ๊ฒฝ์ฐ npm run build ํ js ํ์ผ์ ์์ฑํด ์ค ํ npm publish๋ก ๋ฐฐํฌํด์ฃผ๋ฉด ๋๋ค!