๐Ÿค ์€์ง€log ๐Ÿค

NPM Package ์ƒ์„ฑ ๋ถ€ํ„ฐ ๋ฐฐํฌ _์ง„์งœ์ง„์งœ์ตœ์ข…๐Ÿš€ ๋ณธ๋ฌธ

๐ŸŒธ Library

NPM Package ์ƒ์„ฑ ๋ถ€ํ„ฐ ๋ฐฐํฌ _์ง„์งœ์ง„์งœ์ตœ์ข…๐Ÿš€

Eun_zii 2022. 11. 2. 17:06

 

 

์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ์„ ํ•˜์ง€๋ง๊ณ  ์šฐ๋ฆฌ๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค์ž๊ณ  ํ•˜์—ฌ

๋‚ด๊ฐ€ ๋งก๊ฒŒ๋˜์—ˆ๋Š”๋ฐ ..

์ดˆ๋ณด ๊ฐœ๋ฐœ์ž ์ž…์žฅ์—์„œ๋Š” ๋„ํ†ต ์•„๋ฌด๊ฒƒ๋„ ๋ชจ๋ฅด๊ฒ ๊ณ  ์–ด๋””์„œ ๋ถ€ํ„ฐ ์–ด๋–ป๊ฒŒ ์‹œ์ž‘ํ•˜๋Š”์ง€๋„ ๊ฐ์ด ์•ˆ์™€์„œ

์—ฌ๊ธฐ์ €๊ธฐ ๊ฒ€์ƒ‰ํ•ด๋ณด๊ณ  ๋Œ์–ด๋ชจ์€ ์ •๋ณด๋กœ ์ตœ์ข…๋ณธ์„ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. 

์ด๊ฒŒ ์ •๋‹ต์ด๋ผ๊ณ ๋Š” ํ• ์ˆ˜ ์—†์ง€๋งŒ ๋น„์Šทํ•œ ์ƒํ™ฉ์ด์‹  ๋ถ„๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ๋•จ ๐Ÿฅ

 

๐Ÿš€ NPM :

Node Package Manager๋กœ ์ด๋ฆ„์˜ ์œ ๋ž˜๋Š” npm์ด Node.js์šฉ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๋กœ ์ฒ˜์Œ ์ƒ์„ฑ๋˜์—ˆ์„ ๋•Œ์ด๋‹ค.

npm์˜ ์—ญํ• ์€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์ด๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์„ค์น˜๋ฅผ ์ง€์›ํ•˜๋ฉฐ ์ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—๋Š” ์•ฝ 800,000๊ฐœ ์ด์ƒ์˜ npm ํŒจํ‚ค์ง€๊ฐ€ ํฌํ•จ๋˜์–ด์žˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค ๊ฐœ๋ฐœ์ž๋Š” ์ด npm์„ ์ด์šฉํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ณต์œ ํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.

  • npm์€ Node.js์™€ ํ•จ๊ป˜ ์„ค์น˜๋œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Node.js๋ฅผ ์„ค์น˜ํ•˜๋ฉด npm ์—ญ์‹œ ๊ฐ™์ด ์„ค์น˜๊ฐ€ ๋œ๋‹ค.

๐Ÿš€ Package.json

npm์˜ ํŒจํ‚ค์ง€๋Š” package.json์— ์ •์˜๋œ๋‹ค. 

npm init ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•˜๋ฉด ์ตœ์ดˆ์— ์ด ํŒŒ์ผ์ด ๋งŒ๋“ค์–ด์ง€๊ณ  npm ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ฒŒ ๋˜๋ฉด ์ด package.json์— ๋ช…์‹œ๋œ๋‹ค.

์ด ์™ธ์—๋„ ์ด ํŒจํ‚ค์ง€๊ฐ€ ์ด๋ฆ„์ด ๋ฌด์—‡์ธ์ง€, ๋ผ์ด์„ผ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ๋˜๋Š”์ง€, NPM Repostory์— ๋ฐฐํฌ๋  ํŒŒ์ผ๋“ค์ด ๋ฌด์—‡์ธ์ง€ ๋“ฑ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ช…์‹œํ•œ๋‹ค. ๋ณดํ†ต package.json์„ ๊ฐ€๋ณ๊ฒŒ ์—ฌ๊ธฐ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด ์ •๋ณด๋“ค์€ ๋‹จ์ˆœํ•˜๊ฒŒ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฐฐํฌ์— ํ•„์š”ํ•˜๊ณ  ํŒจํ‚ค์ง€์˜ ์‚ฌ์šฉ์ฒ˜๋ฅผ ๋‚จ๊ธฐ๋Š” ๋“ฑ์˜ ์—ญํ• ์„ ํ•˜๋ฏ€๋กœ ์‹ ์ค‘ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

 

Creating a package.json file | npm Docs

Documentation for the npm registry, website, and command-line interface

docs.npmjs.com

๐Ÿš€ Package-lock.json

package-lock.json์€ ์ตœ์ดˆ npm init์„ ์‹คํ–‰ ์‹œ ์ƒ์„ฑ๋˜์ง€๋Š” ์•Š๋Š”๋‹ค.

์ด package-lock.json์€ npm ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •, ์‚ญ์ œ ๋“ฑ์˜ ์ž‘์—…์„ ์ง„ํ–‰ํ•  ๋•Œ ์ƒ์„ฑ๋˜๋ฉฐ ํ•ต์‹ฌ ์—ญํ• ์€ ๊ฐ ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ์ด๋‹ค.

๊ฐ ํŒจํ‚ค์ง€๋Š” ์„œ๋กœ ์—‰์ผœ์žˆ๋Š” ์‹คํƒ€๋ž˜์™€ ๊ฐ™๋‹ค. ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋ฅผ ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฒ„์ „์„ ๊ฐ€์ง€๋ฉฐ ๋˜ ์ด ์—ฌ๋Ÿฌ ๋ฒ„์ „์„ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํŒจํ‚ค์ง€ ๋ฒ„์ „ ๊ฐ„์˜ ์ถฉ๋Œ๊ณผ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋ฅผ ๋ฏธ์—ฐ์— ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค.

 

์‹ค์ œ๋กœ package-lock.json์„ ์‚ดํŽด๋ณด๋ฉด ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€์— dependencies(์ข…์†)๊ฐ€ ์–ด๋–ค ํŒจํ‚ค์ง€์ธ์ง€ ๋ฒ„์ „ ์ •๋ณด์™€ ์ด๋ฆ„์ด ๋‚˜์—ด๋˜์–ด ์žˆ๊ณ  dependencies์— ๋ช…์‹œ๋œ ํŠน์ • ํŒจํ‚ค์ง€๋ฅผ ๋‹ค์‹œ ๊ฒ€์ƒ‰ ๋ฐ ์ถ”์ ํ•˜๋‹ค ๋ณด๋ฉด ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๊ฐ„ํ˜น ๋‚ด๊ฐ€ ์„ค์น˜ํ•œ npm ํŒจํ‚ค์ง€์˜ ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๊ธฐ ์œ„ํ•ด npm install์„ ํ•˜์˜€๋Š”๋ฐ ์ตœ์‹  ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด package-lock.json์„ ์‚ญ์ œํ•˜๊ณ  ์žฌ ์„ค์น˜ํ•˜์ž.

๐Ÿš€ ํŒจํ‚ค์ง€ ๊ณต์œ 

npm ํŒจํ‚ค์ง€๋Š” NPM Registry์— ๋ฐฐํฌํ•˜์—ฌ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ฐ€์ž…๊ณผ ์‚ฌ์šฉ์€ ๋ฌด๋ฃŒ์ด๊ณ  ์ผ๋ถ€ ๊ฐœ์ธ์ ์ธ ๊ถŒํ•œ์„ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์š”๊ธˆ์„ ๋ถ€๊ณผํ•ด์•ผ ํ•˜์ง€๋งŒ ํ•ด๋‹น ํฌ์ŠคํŒ…์„ ๋”ฐ๋ผ ํ•˜๋Š” ๋ฐ์—๋Š” ๋ถˆํ•„์š”ํ•˜๋‹ค.

 


 

๐Ÿ”† NPM ๊ฐ€์ž…

 

 

npm

Bring the best of open source to you, your team, and your company Relied upon by more than 11 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

www.npmjs.com

 

NPM Registry ๊ฐ€์ž…์€ NPM ๊ณต์‹ ํŽ˜์ด์ง€์—์„œ ๊ฐ€์ž…ํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋ฆ„๊ณผ email, ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ํ›„ โญ๏ธemail ์ธ์ฆ์„ ํ•„์ˆ˜๋กœ ์ง„ํ–‰โญ๏ธํ•ด์•ผ ํ•œ๋‹ค. 

email ์ธ์ฆ์„ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐฐํฌ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

๊ฐ€์ž… ํ›„ ๋กœ๊ทธ์ธ์„ ํ•˜๊ณ  ์šฐ์ธก ์ƒ๋‹จ์˜ ์•„์ด์ฝ˜์„ ๋ˆŒ๋Ÿฌ Package ํด๋ฆญ

 

 

์•ž์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋ฐฐํฌํ•˜๊ฒŒ ๋˜๋ฉด ์ด๊ณณ์— ์˜ฌ๋ผ๊ฐ€๊ฒŒ ๋œ๋‹ค.

 

๐Ÿ”† npm info

 

์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ์ „์—, ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ ํŒจํ‚ค์ง€๋ช…์ธ์ง€ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

๋‹น์—ฐํ•˜์ง€๋งŒ, ํ˜„์žฌ NPM์— ๋ฐฐํฌ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

 

์•„๋ž˜์— ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž์‹ ์˜ <ํŒจํ‚ค์ง€ ์ด๋ฆ„>์ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ์ง€ ํ™•์ธํ•ด ๋ณด์ž.

 

npm info <Package Name>

 

์ค‘๋ณต๋œ ์ด๋ฆ„์ด๋ผ๋ฉด ์ด๋ฏธ ๋ฐฐํฌ๋œ ํŒจํ‚ค์ง€์˜ ์ •๋ณด๋ฅผ ํ™•์ธํ• ์ˆ˜ ์žˆ๊ณ ,

์ค‘๋ณต๋˜์ง€ ์•Š์€ ์ด๋ฆ„์ด๋ผ๋ฉด 404 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒ ํ•œ๋‹ค. 

โœ… 404 ์—๋Ÿฌ๊ฐ€ ๋‚˜์˜ค๋ฉด ์ƒ์„ฑํ• ์ˆ˜ ์žˆ๋Š” ํŒจํ‚ค์ง€ ์ด๋ฆ„ ์ด๋‹ค.

 

+์ถ”๊ฐ€๋กœ

์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์ง€ ์•Š๋‹ค๋ฉด ํŒจํ‚ค์ง€ ์ด๋ฆ„ ์•ž์— @์Šค์ฝ”ํ”„๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค.

์˜ˆ๋ฅผ๋“ค์–ด, react ๋ผ๋Š” ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด

@eunji/react

์ด๋ ‡๊ฒŒ ๋ณธ์ธ ์ด๋ฆ„ ๋˜๋Š” ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ๋“ฑ๋“ฑ ์‹๋ณ„ํ• ์ˆ˜ ์žˆ๋Š” ์Šค์ฝ”ํ”„๋ฅผ ์ง€์ •ํ•ด์ค€๋‹ค.

 

๐Ÿ”† npm init

 

์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ NPM์— ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ NPM์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ํด๋”๋กœ ์ด๋™ํ•œ ํ›„, ํ„ฐ๋ฏธ๋„์— ์•„๋ž˜์— ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์ค€๋‹ค.

 

* ๋งŒ๋“ค์–ด๋‘” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด <๋งŒ๋“ค๊ณ ์žํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ> ํด๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ ,

๋‚ด๋ถ€์—์„œ ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ฐ ํ›„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ NPM ์ดˆ๊ธฐ ์„ค์ •์„ ์ง„ํ–‰ํ•˜์ž.

 

# cd ProjectName
npm init

 

์œ„์˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์•„๋ž˜์— ์„ค๋ช…ํ•˜๋Š” ๋‚ด์šฉ์€ ์ถ”ํ›„์—๋„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๋ถ€๋‹ด์—†์ด ์ง„ํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

 

 

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help init` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (react-scroll-to-top)

 

ํด๋”๋ช…์„ ๊ธฐ์ค€์œผ๋กœ package name์„ ๊ฒฐ์ •ํ• ์ง€, ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ์„ค์ •ํ• ์ง€ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค.

์œ„์—์„œ npm info๋กœ ๋ฐฐํฌ ๊ฐ€๋Šฅํ•œ ์ด๋ฆ„์„ ์ฐพ์•„๋†“์•˜๊ณ , ๊ทธ ์ด๋ฆ„์œผ๋กœ ์ž…๋ ฅํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

version: (1.0.0)

 

๊ทธ ๋‹ค์Œ, ๋ฒ„์ „์„ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค.

๋ฒ„์ „์€ ๊ธฐ๋ณธ์ ์œผ๋กœ major/ minor/ patch๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋˜์—ˆ๊ณ , ๋ฐฐํฌ๋งŒ์„ ๋‚จ๊ฒจ๋‘” ์ƒํ™ฉ์ด๋ผ๋ฉด 1.0.0์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์•„์ง ๊ฐœ๋ฐœ์ค‘์ด๊ณ , ์™„๋ฒฝํ•˜์ง€ ์•Š๋‹ค๋ฉด 0.0.1์„ ์ง€์ •ํ•˜์—ฌ ์•ˆ์ •์ ์ธ ๋ฒ„์ „์ด ์•„๋‹˜์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค.

 

description:

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ž‘์„ฑํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

entry point: (index.js)

 

์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋‹ค๋ฅธ ์œ ์ €๋“ค์ด ์‚ฌ์šฉํ• ๋•Œ ์–ด๋–คํŒŒ์ผ์ด ์ž…๊ตฌํŒŒ์ผ์ด ๋˜๋ƒ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š”๊ฒƒ์ด๋‹ค.

๋ณดํ†ต์€ index.js ์ด ๋””ํดํŠธ๊ฐ’์œผ๋กœ ๋˜์–ด์žˆ๊ณ  main.js ๋“ฑ๋“ฑ ์›ํ•˜๋Š”ํŒŒ์ผ๋กœ ๋งŒ๋“ค์–ด๋„ ๋œ๋‹ค.

* ๋‹จ ํ•ด๋‹นํŒŒ์ผ์€ .js ํŒŒ์ผ์ด์—ฌ์•ผ ํ•œ๋‹ค.

 

test command:

 

์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•  ๋ช…๋ น์–ด๊ฐ€ ์—†๋‹ค๋ฉด, Enter ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

git repository:

 

๋ฐฐํฌํ•˜๋ ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” Git ์ €์žฅ์†Œ์˜ URL์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

URL์ด ์กด์žฌํ•˜์ง€ ์•Š๋‹ค๋ฉด Enter ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

 

keywords:

 

๋ฐฐํฌํ•˜๋ ค๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. 

ํ•ด์‰ฌํƒœ๊ทธ# ๊ฐ™์€ ๋Š๋‚Œ์ด๋ผ๊ณ  ๋ณด๋ฉด๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„ค์ •ํ•œ keyword๋Š” npm search ์‚ฌ์šฉ ์‹œ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

 

author:

 

๋ฐฐํฌํ•˜๋Š” ์‚ฌ๋žŒ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต Name <Email Address> ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

license: (ISC)

 

๋ฐฐํฌํ•˜๋ ค๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ผ์ด์„ผ์Šค์— ๊ด€ํ•œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ผ์ด์„ผ์Šค์— ๋งž๊ฒŒ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ex) MIT, ISC ๋“ฑ

๋ผ์ด์„ผ์Šค์— ํ‚ค์›Œ๋“œ์— ๊ด€ํ•ด์„œ๋Š” ์•„๋ž˜์˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

 

 

Licensing a repository - GitHub Docs

Choosing the right license We created choosealicense.com, to help you understand how to license your code. A software license tells others what they can and can't do with your source code, so it's important to make an informed decision. You're under no obl

docs.github.com

 

์ด๋ ‡๊ฒŒ ๋ชจ๋“  ํ•ญ๋ชฉ์„ ์ž…๋ ฅํ•˜๋ฉด ์ž์‹ ์˜ ํ”„๋กœ์ ํŠธ ํด๋”์•ˆ์— package.json ํŒŒ์ผ์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ”† npm login

 

NPM์— ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š”, ์•„๋ž˜์— ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NPM ์„œ๋น„์Šค์— ๋กœ๊ทธ์ธ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

npm login

 

์œ„์— ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋กœ๊ทธ์ธ์„ ํ•˜๊ธฐ์œ„ํ•œ ์ ˆ์ฐจ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

 

Username: 
Password:
Email: (this IS public) 
Logged in as on https://registry.npmjs.org/.

 

์œ„์—์„œ ์ƒ์„ฑํ•œ NPM ๊ณ„์ •์˜ ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊ทธ์ธ์„ ํ•˜์˜€๋‹ค๋ฉด ์•„๋ž˜์— ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ œ๋Œ€๋กœ ๋กœ๊ทธ์ธ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

 

npm whoami

 

Password ์—๋Š” ์•”ํ˜ธํ™”๊ฐ€ ๊ฑธ๋ ค์žˆ๋Š”๊ฑด์ง€.. ์ž…๋ ฅ์ด ์•ˆ๋˜๋Š”๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํ›„ ์—”ํ„ฐ ํ•˜๋ฉด Email๋กœ ๋„˜์–ด๊ฐ„๋Œœ..๐Ÿ˜ฎ&zwj;๐Ÿ’จ

๐Ÿ”† .npmignore

 

์‹ค์ œ ๊ฐœ๋ฐœ์—๋Š” ํ•„์š”ํ•˜๋‚˜, ๊ฐœ๋ฐœ์ด ์™„๋ฃŒ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ•„์š”์—†๋Š” ํŒŒ์ผ๋“ค์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ, ์˜ˆ์ œ ์†Œ์Šค๋“ค์ด ์ด์— ํ•ด๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๊ฐœ๋ฐœ์—๋Š” ํ•„์š”ํ•˜๋‚˜, ๋ฐฐํฌ์—๋Š” ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์„ .npmignore ํŒŒ์ผ์„ ํ†ตํ•ด ์ œ์™ธ ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

.idea
node_modules

 

๊ฐœ๋ฐœํ•˜๋‹ค๊ฐ€ ์ถ”๊ฐ€๋œ๊ฒƒ๋“ค์ค‘ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํ•„์š”์—†๋Š” ํŒŒ์ผ๋“ค์ด ์žˆ๋‹ค๋ฉด ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด๋œ๋‹ค.

.npmignoreํŒŒ์ผ์€ .gitignoreํŒŒ์ผ๋กœ๋„ ๋Œ€์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

๐Ÿ”† npm publish

 

์ด์ œ NPM์— ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋ž˜์— ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ NPM์— ๋ฐฐํฌํ•ด ๋ด…์‹œ๋‹ค.

 

npm publish

 

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋ฐฐํฌํ•˜๊ธฐ ์ „์— ํŠน์ • ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค๋ฉด package.json์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

 

 

 

๐Ÿ“ ๋งŒ์•ฝ ๋ฐฐํฌ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด ํ˜„์žฌ๋กœ๋Š” ๋ณดํ†ต ์„ธ ๊ฐ€์ง€ ๊ฒฝ์šฐ์ด๋‹ค.

 

1. NPM Registry ๊ฐ€์ž… ํ›„ E-Mail ์ธ์ฆ์„ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ

  • E-Mail ์ธ์ฆ์„ ์‹œ๋„ํ•˜์ž.

2. ํŒจํ‚ค์ง€์˜ ์ด๋ฆ„์ด ์ด๋ฏธ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€์™€ ์ค‘๋ณต์ด ๋œ ๊ฒฝ์šฐ

  • npm info <ํŒจํ‚ค์ง€์ด๋ฆ„> ์œผ๋กœ ์ค‘๋ณต ํ™•์ธํ›„, package.json์˜ name ์†์„ฑ์„ ๋ฐ”๊ฟ”์ฃผ์ž.

3. ์ด๋ฏธ ๊ฐ™์€ ๋ฒ„์ „์œผ๋กœ ๋ฐฐํฌ๊ฐ€ ๋œ ๊ฒฝ์šฐ

  • npm version [major, minor, path, x.x.x] ๋ช…๋ น์–ด๋กœ ๋ฒ„์ „์„ ์˜ฌ๋ ค ๋ฐฐํฌํ•˜์ž.

์œ„ ๋‚ด์šฉ๋Œ€๋กœ ํ•˜๋ฉด ์ •์ƒ์ ์œผ๋กœ ํŒจํ‚ค์ง€๊ฐ€ ๋ฐฐํฌ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

โœ๏ธ ์ฐธ๊ณ 

๋ฐฐํฌ๋œ ํŒจํ‚ค์ง€๋Š” 72์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ์‚ญ์ œํ•  ์ˆ˜ ์—†์–ด์„œ ๋ถˆํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋ผ๋ฉด ๋ฏธ๋ฆฌ ์‚ญ์ œํ•˜์ž.

 

npm unpublish <PACKAGE NAME> -f

 

๐ŸŒฑ

์ด๊ฒƒ์œผ๋กœ ์—ฌ๋Ÿฌ๋ถ„์ด ๊ฐœ๋ฐœํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ NPM์— ๋ฐฐํฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋ฐฐํฌ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด NPM ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

npm install <Your Package Name>
 

๐Ÿ”† npm Package ์ˆ˜์ •

 

NPM์— ๋ฐฐํฌํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ  ๋‹ค์‹œ ๋ฐฐํฌํ•ด์•ผํ•  ์ผ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ์žฌ๋ฐฐํฌ๋ฅผ ํ•  ๊ฒฝ์šฐ, ๋ฒ„์ „์„ ์˜ฌ๋ ค์ค„ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฒ„์ „์„ ์˜ฌ๋ฆฌ๊ธฐ ์œ„ํ•ด์„œ๋Š” package.json ํŒŒ์ผ์˜ ๋ฒ„์ „("version": "0.0.1")์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜๊ณ  ๋ฐฐํฌํ•ด๋„ ๋˜๊ณ ,

์•„๋ž˜์— ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

npm version patch
npm version minor
npm version major

 

์œ„์— ๋ช…๋ น์–ด๋ฅผ ํ•„์š”ํ•œ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์‚ฌ์šฉํ•˜์‹œ๋ฉด, ์‰ฝ๊ฒŒ ๋ฒ„์ „์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ”† ์™„๋ฃŒ

 

์ด๊ฒƒ์œผ๋กœ ์ž์‹ ์ด ๊ฐœ๋ฐœํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ NPM์— ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์•˜์Šต๋‹ˆ๋‹ค.

 

 


๐Ÿ’ก๋ฌด์กฐ๊ฑด ํ•ด์•ผํ•˜๋Š”๊ฑด ์•„๋‹ˆ์ง€๋งŒ ์ฐธ๊ณ ํ•  ๋‚ด์šฉ๐Ÿ’ก

 

โœ… ํŒจํ‚ค์ง€์˜ ๊ตฌ์กฐ ์™€ ํ˜•์‹ ์ฐธ๊ณ 

 

๐Ÿ”† ํŒจํ‚ค์ง€ ๊ตฌ์กฐ

 

๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.

  • dist/๋Š” ๋ฐฐํฌ์šฉ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. Webpack์ด๋‚˜ ParcelGulp ๊ฐ™์€ ๋ฒˆ๋“ค๋Ÿฌ๋กœ ๋ฐฐํฌ์šฉ ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • examples/๋Š” ์ œ๊ณตํ•  ์˜ˆ์ œ ๋””๋ ‰ํ„ฐ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์˜ˆ์ œ ํŒŒ์ผ๊ณผ ํ•จ๊ป˜ Demo ํŽ˜์ด์ง€๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋ฉด ๋”์šฑ ์ข‹์Šต๋‹ˆ๋‹ค.
  • lib/์—๋Š” ํŒจํ‚ค์ง€ ์ œ์ž‘์„ ์œ„ํ•œ ์›๋ณธ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

my_npm_module/
โ”œโ”€โ”€ dist/
โ”œโ”€โ”€ examples/
โ”œโ”€โ”€ lib/
โ”œโ”€โ”€ .gitignore
โ”œโ”€โ”€ .npmignore
โ”œโ”€โ”€ LICENSE
โ””โ”€โ”€ package.json

 

๐Ÿ”† ํŒจํ‚ค์ง€ ํ˜•์‹

 

๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์ด AMD, UMD, CommonJS, ES Module ๋“ฑ์˜ ์ œ๊ณตํ•  ํŒจํ‚ค์ง€ ํ˜•์‹์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

dist/
โ”œโ”€โ”€ my_module.js        (UMD)
โ”œโ”€โ”€ my_module.min.js    (UMD, compressed)
โ”œโ”€โ”€ my_module.common.js (CommonJS, default)
โ””โ”€โ”€ my_module.esm.js    (ES Module)

 

 

โœ… TypeScript ๋กœ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ค๋•Œ ์ฐธ๊ณ 

 

"scripts": {
  ...
  "prepare": "rm -rf dist && tsc"
},

 

Typescript๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœํ–ˆ๋‹ค๋ฉด, ๋ฐฐํฌ์ „์— Typescript๋ฅผ ๋นŒ๋“œํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ package.json์˜ scripts์— prepare ๋ช…๋ น์–ด๋ฅผ ์„ ์–ธํ•˜๋ฉด, npm publish ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ํ•ด๋‹น ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

./tsconfig.json

{
  "compilerOptions": {
    "outDir" : "./dist/",
    "declaration": true,
    ...
  }
}

./package.json

{
  "main" : "./dist/index.js",
}

./index.ts

export const ์•„๋ฌด๊ฐ’ = "์•„๋ฌด๊ฐ’"

 

์ด๋ ‡๊ฒŒ ์„ค์ •ํ•˜๋ฉด tsc ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์ปดํŒŒ์ผ๋œ ts ํŒŒ์ผ์ด ./dist ํด๋” ์•„๋ž˜์— js ํŒŒ์ผ ํ˜•ํƒœ๋กœ ๋‚ด๋ณด๋‚ด์ง„๋‹ค.

์ฆ‰ ์ด ๊ฒฝ์šฐ index.ts ํŒŒ์ผ์ด ์ปดํŒŒ์ผ๋˜ ./dist/index.js ํŒŒ์ผ๋กœ ๋‚ด๋ณด๋‚ด์ง„๋‹ค.

์ด๋ฅผ npm ํŒจํ‚ค์ง€๋กœ ๋ฐ›์œผ๋ฉด package.json์˜ main๊ฐ’์„ ํ†ตํ•ด ์ง„์ž…์ ์„ ์žก๋Š” ๊ฒƒ์ด๋‹ค.

์ฐธ๊ณ ๋กœ ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ ํ™˜๊ฒฝ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ๊ทธ๋ƒฅ index.js ํŒŒ์ผ๋งŒ ๋‚ด๋ณด๋‚ด๋ฉด ํƒ€์ž… ์ถ”๋ก ์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์ง€๋‹ˆ 

declaration ์˜ต์…˜์„ ํ†ตํ•ด d.ts ํŒŒ์ผ๋„ ๋‚ด๋ณด๋‚ด์•ผ ํ•œ๋‹ค. ์ด ํŒŒ์ผ์ด ์žˆ์–ด์•ผ ํŒจํ‚ค์ง€์—์„œ typescript๊ฐ€ ํƒ€์ž… ์ถ”๋ก ์„ ํ•ด์ค€๋‹ค.

 

NPM ํŒจํ‚ค์ง€๋ฅผ typescript๋กœ ๋งŒ๋“ค์—ˆ๋‹ค๋ฉด ์•„๋งˆ ts ํŒŒ์ผ๋“ค๊ณผ ์ปดํŒŒ์ผ๋œ ํŒŒ์ผ๋“ค์ด ํŒจํ‚ค์ง€์— ๊ณต์กดํ•  ํ…๋ฐ,

ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ์›๋ณธ ts ํŒŒ์ผ๋“ค์€ ํ•„์š”๊ฐ€ ์—†์ด ์šฉ๋Ÿ‰๋งŒ ์ฐจ์ง€ํ•˜๊ฒŒ ๋œ๋‹ค.

์ด๋•Œ package.json์— files ํ•„๋“œ๋ฅผ ์ด์šฉํ•ด ํŠน์ • ํด๋”๋งŒ ๋‚ด๋ณด๋‚ผ ๊ฒƒ์ด๋ผ๊ณ  ์ง€์ •ํ•˜๋ฉด ํŒจํ‚ค์ง€๋ฅผ ๋‚ด๋ ค๋ฐ›๋Š” ์šฉ๋Ÿ‰์„ ์•ฝ๊ฐ„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋˜๋Š” .gitignore, .npmignore ํŒŒ์ผ์„ ์ด์šฉํ•ด์„œ๋„ ๋™์ผํ•œ ๋™์ž‘์ด ๊ฐ€๋Šฅํ•œ๋ฐ

์ผ๋ฐ˜์ ์œผ๋กœ files ์„ค์ •์ด ๊ฐ€์žฅ ์‰ฝ๊ธฐ๋„ ํ•˜๊ณ  ๋ณต์žกํ•œ ์„ ํƒ ๊ตฌ๋ฌธ์ด ํ•„์š”ํ•œ ์ผ๋„ ์ ๊ธฐ์—

์•„๋งˆ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ์—๋Š” ์ด ์„ค์ •๋งŒ์œผ๋กœ ์ถฉ๋ถ„ํ•  ๊ฑฐ๋ผ ์ƒ๊ฐ๋œ๋‹ค.

ํ•ด๋‹น ์„ค์ •์„ ์–ด๋–ป๊ฒŒ ์žก์•„์•ผ ํ•˜๋Š”์ง€๋Š” ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ๋œ๋‹ค.

 

 

 

728x90

'๐ŸŒธ Library' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Npm package install์‹œ Invalid hook call ์—๋Ÿฌ  (0) 2022.11.11
TypeScript๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋งŒ๋“ค๊ธฐ  (0) 2022.11.09
NPM ๊ณผ YARN  (0) 2022.11.08
NPM Package Version  (0) 2022.11.07