๐ค ์์งlog ๐ค
NPM Package ์์ฑ ๋ถํฐ ๋ฐฐํฌ _์ง์ง์ง์ง์ต์ข ๐ ๋ณธ๋ฌธ
์ฌ์ด๋ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ํ์ง๋ง๊ณ ์ฐ๋ฆฌ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค์๊ณ ํ์ฌ
๋ด๊ฐ ๋งก๊ฒ๋์๋๋ฐ ..
์ด๋ณด ๊ฐ๋ฐ์ ์ ์ฅ์์๋ ๋ํต ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด๊ฒ ๊ณ ์ด๋์ ๋ถํฐ ์ด๋ป๊ฒ ์์ํ๋์ง๋ ๊ฐ์ด ์์์
์ฌ๊ธฐ์ ๊ธฐ ๊ฒ์ํด๋ณด๊ณ ๋์ด๋ชจ์ ์ ๋ณด๋ก ์ต์ข ๋ณธ์ ๋ง๋ค๊ฒ ๋์๋ค.
์ด๊ฒ ์ ๋ต์ด๋ผ๊ณ ๋ ํ ์ ์์ง๋ง ๋น์ทํ ์ํฉ์ด์ ๋ถ๋ค์๊ฒ ๋์์ด ๋์์ผ๋ฉด ์ข๊ฒ ๋จ ๐ฅ
๐ 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์ ๊ฐ๋ณ๊ฒ ์ฌ๊ธฐ๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ์ด ์ ๋ณด๋ค์ ๋จ์ํ๊ฒ ์ ๊ณตํ๋ ๊ฒ์ด ์๋ ๋ฐฐํฌ์ ํ์ํ๊ณ ํจํค์ง์ ์ฌ์ฉ์ฒ๋ฅผ ๋จ๊ธฐ๋ ๋ฑ์ ์ญํ ์ ํ๋ฏ๋ก ์ ์คํ๊ฒ ์์ฑํ ํ์๊ฐ ์๋ค.
๐ 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 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 ๋ฑ
๋ผ์ด์ผ์ค์ ํค์๋์ ๊ดํด์๋ ์๋์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์๊ธฐ ๋ฐ๋๋๋ค.
์ด๋ ๊ฒ ๋ชจ๋ ํญ๋ชฉ์ ์ ๋ ฅํ๋ฉด ์์ ์ ํ๋ก์ ํธ ํด๋์์ 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
๐ .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์ด๋ Parcel, Gulp ๊ฐ์ ๋ฒ๋ค๋ฌ๋ก ๋ฐฐํฌ์ฉ ํ์ผ์ ์์ฑํ ์ ์์ต๋๋ค.
- 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 ์ค์ ์ด ๊ฐ์ฅ ์ฝ๊ธฐ๋ ํ๊ณ ๋ณต์กํ ์ ํ ๊ตฌ๋ฌธ์ด ํ์ํ ์ผ๋ ์ ๊ธฐ์
์๋ง ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ ์ด ์ค์ ๋ง์ผ๋ก ์ถฉ๋ถํ ๊ฑฐ๋ผ ์๊ฐ๋๋ค.
ํด๋น ์ค์ ์ ์ด๋ป๊ฒ ์ก์์ผ ํ๋์ง๋ ๊ณต์ ๋ฌธ์๋ฅผ ์ฐธ์กฐํ๋ฉด ๋๋ค.
'๐ธ 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 |