npm์ Node Package Manager(๋ ธ๋ ํจํค์ง ๋งค๋์ )์ ์ฝ์ด๋ก, ๋๋ถ๋ถ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ ํจํค์ง๋ผ๋ ์ด๋ฆ์ผ๋ก npm์ ๋ฑ๋ก๋์ด ์๋ค. ํน์ ๊ธฐ๋ฅ์ ํ๋ ํจํค์ง๊ฐ ํ์ํ๋ค๋ฉด npm ์์ ์ฐพ์ ์ค์นํ๋ค.
โ ํจํค์ง
npm์ ์ ๋ก๋๋ ๋ ธ๋ ๋ชจ๋์ ํจํค์ง๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํจํค์ง๊ฐ ๋ค๋ฅธ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ, ์ด๋ฐ ๊ด๊ณ๋ฅผ ์์กด ๊ด๊ณ๋ผ ๋ถ๋ฅธ๋ค.
โ yarn
npm์ ๋์ฒด์๋ก yarn์ด ์๋ค. yarn์ ํ์ด์ค๋ถ์ด ๋ด๋์ ํจํค์ง ๋งค๋์ ๋ก, ๋ฆฌ์กํธ๋ ๋ฆฌ์กํธ ๋ค์ดํฐ๋ธ ๊ฐ์ ํ์ด์ค๋ถ ์ง์์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ ๋ ๋ณผ ์ ์๋ค. ๋ช ๊ฐ์ง ํธ๋ฆฌํ ๊ธฐ๋ฅ์ด ๋ค์ด์์ง๋ง ๋ณ๋๋ก ์ค์นํด์ผ ํ๋ฉฐ, npm ์๋ฒ๊ฐ ๋๋ฆด ๊ฒฝ์ฐ yarn์ผ๋ก ํจํค์ง๋ฅผ ๋์ ์ค์นํ ์ ์๋ค.
์ฌ์ฉํ ํจํค์ง๋ ์ ๋ง๋ค ๊ณ ์ ํ ๋ฒ์ ์ด ์์ผ๋ฏ๋ก ์ด๋๊ฐ์ ๊ธฐ๋กํด๋์ด์ผ ํ๋ค. ๊ฐ์ ํจํค์ง๋ผ๋ ๋ฒ์ ๋ณ๋ก ๊ธฐ๋ฅ์ด ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ํ๋ก์ ํธ ์ค์น ์ ํจํค์ง๋ ๋์ผํ ๋ฒ์ ์ ์ค์นํ์ง ์์ผ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๋ค. ์ค์นํ ํจํค์ง์ ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ํ์ผ์ด package.json์ด๋ค.
ํด๋ ๋ด๋ถ์ ๋ฌด์กฐ๊ฑด package.json๋ถํฐ ๋ง๋ค๊ณ ์์ํด์ผ ํ๋ค. npm์์ package.json์ ๋ง๋๋ ๋ช ๋ น์ด๋ฅผ ์ ๊ณตํ๋ค.
โ ๋ผ์ด์ ์ค
๋ผ์ด์ ์ค(license)๋ณ๋ก ์ ํ ์ฌํญ์ด ์์ผ๋ฏ๋ก ์ค์น ์ ์ ๋ฐ๋์ ๋ผ์ด์ ์ค๋ฅผ ํ์ธํด์ผ ํ๋ค. ISC, MIT, BSC ๋ผ์ด์ ์ค๋ฅผ ๊ฐ์ง ํจํค์ง ์ฌ์ฉ ์์๋ ์ฌ์ฉํ ํจํค์ง์ ๋ผ์ด์ ์ค๋ง ๋ฐํ๋ฉด ์์ ๋ก์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค. ์ํ์น ๋ผ์ด์ ์ค ํจํค์ง๋ ์ฌ์ฉ์ด ์์ ๋กญ์ง๋ง ํนํ๊ถ์ ๋ํ ์ ํ์ด ํฌํจ๋์ด ์๋ค. GPL ๊ณ์ด์ ํจํค์ง๋ฅผ ์ฌ์ฉํ ํจํค์ง๋ฅผ ๋ฐฐํฌํ ๋๋ ์์ ์ ํจํค์ง๋ GPL๋ก ๋ฐฐํฌํ๊ณ ์์ค ์ฝ๋๋ ๊ณต๊ฐํด์ผ ํ๋ค. ์คํ ์์ค ์ฌ์ฉ ์ ๋ผ์ด์ ์ค๋ฅผ ํ์ธํ๊ณ ์ธ๋ถ๋ด์ฉ์ ์ฝ์ด๋ณด์์ผ ํ๋ค.
{
"name": "npmtest",
"version": "0.0.1",
"description": "hello package.json",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Dori",
"license": "ISC"
}
scripts ๋ถ๋ถ์ npm ๋ช ๋ น์ด๋ฅผ ์ ์ฅํด๋๋ ๋ถ๋ถ์ด๋ค. ์ฝ์์์ npm run [์คํฌ๋ฆฝํธ ๋ช ๋ น์ด]๋ฅผ ์ ๋ ฅํ๋ฉด ํด๋น ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๋ค. ๋ณดํต start ๋ช ๋ น์ด์ node [ํ์ผ๋ช ]์ ์ ์ฅํด๋๊ณ npm start๋ก ์คํํ๋ค. start๋ text ๊ฐ์ ์คํฌ๋ฆฝํธ๋ run์ ๋ถ์ด์ง ์์๋ ์คํ๋๋ค.
โ ํจํค์ง ์ค์น
npm install [ํจํค์ง ์ด๋ฆ]์ package.json์ด ์๋ ํด๋์ ์ฝ์์ ์ ๋ ฅํ๋ค. npm install [ํจํค์ง1] [ํจํค์ง2] [...]์ ๊ฐ์ด ๋ชจ๋ ์ฌ๋ฌ ๊ฐ๋ฅผ ๋์์ ์ค์นํ ์ ์๋ค.
โ audited [์ซ์] packages
found [๋ฐ๊ฒฌ ์ซ์] [์ฌ๊ฐ๋] severity vulnerabilities
run `npm audit fix` to fix them, or `npm audit` for details
ํจํค์ง ์ค์น ์ audited [์ซ์] packages๋ผ๋ ๋ฌธ์ฅ์ด ์ถ๋ ฅ๋๋๋ฐ, ์ด๋ ํจํค์ง์ ์์ ์ ์๋ ์ทจ์ฝ์ ์ ์๋์ผ๋ก ๊ฒ์ฌํ๋ค๋ ์๋ฏธ์ด๋ค. npm audit์ ํจํค์ง์ ์๋ ค์ง ์ทจ์ฝ์ ์ ๊ฒ์ฌํ ์ ์๋ ๋ช ๋ น์ด์ด๋ค. ์ผ๋ถ ํจํค์ง๋ ์ ์ฑ ์ฝ๋๋ฅผ ๋ด๊ณ ์๋๋ฐ, npm audit์ ํตํด ์ ์ฑ ์ฝ๋๊ฐ ๋ด๊ธด ํจํค์ง๋ฅผ ์ค์นํ์ง ์์๋์ง ๊ฒ์ฌํ ์ ์๋ค. npm audit fix๋ฅผ ์ ๋ ฅํ๋ฉด npm์ด ์์ ํ ์ ์๋ ์ทจ์ฝ์ ์ ์์์ ์์ ํ๋ค.
โ node_modules ํด๋
ํด๋น ํด๋ ์์ ์ค์นํ ํจํค์ง๋ค์ด ๋ค์ด ์๋ค. ํจํค์ง๋ค์ ์์กด ๊ด๊ณ๊ฐ ๋ณต์กํ๊ฒ ์ฝํ ์๋ค.
์ ์ญ ์ค์นํ ํจํค์ง๋ package.json์ ๊ธฐ๋ก๋์ง ์์ ๋ค์ ์ค์นํ ๋ ์ด๋ ค์์ด ๋ฐ๋ฅธ๋ค.
$ npm install --save-dev rimraf
$ npx rimraf node_modules
rimraf ๋ชจ๋์ package.json์ devDependencies ์์ฑ์ ๊ธฐ๋กํ ํ, ์์ npx ๋ช ๋ น์ด๋ฅผ ๋ถ์ฌ ์คํํ๋ฉด ํจํค์ง๋ฅผ ์ ์ญ ์ค์นํ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค. ํจํค์ง๊ฐ package.json์ ๊ธฐ๋ก๋๋ฏ๋ก ๋ฒ์ ๊ด๋ฆฌ๋ ์ฉ์ดํ๋ค.
SemVer ๋ฐฉ์์ ๋ฒ์ ๋๋ฒ๋ง์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ ธ๋ ํจํค์ง๋ค์ ๋ฒ์ ์ ํญ์ ์ธ ์๋ฆฌ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. SemVer์ ๋ฒ์ ๋ฒํธ๋ฅผ ์ด๋ป๊ฒ ์ ํ๊ณ ์ฌ๋ ค์ผ ํ๋์ง๋ฅผ ๋ช ์ํ๋ ๊ท์น์ด๋ค.
๋ฒ์ ์ ์ฒซ ๋ฒ์งธ ์๋ฆฌ๋ major ๋ฒ์ ์ผ๋ก, 0์ด๋ฉด ์ด๊ธฐ ๊ฐ๋ฐ ์ค์ด๋ผ๋ ๋ป์ด๊ณ 1๋ถํฐ๋ ์ ์ ๋ฒ์ ์ ์๋ฏธํ๋ค. major ๋ฒ์ ์ ํ์ ํธํ์ด ์ ๋ ์ ๋๋ก ํจํค์ง ๋ด์ฉ์ด ์์ ๋์์ ๋ ์ฌ๋ฆฐ๋ค.
๋ ๋ฒ์งธ ์๋ฆฌ๋ minor ๋ฒ์ ์ผ๋ก ํ์ ํธํ์ด ๋๋ ๊ธฐ๋ฅ์ ์ ๋ฐ์ดํธํ ๋ ์ฌ๋ฆฐ๋ค.
์ธ ๋ฒ์งธ ์๋ฆฌ๋ patch ๋ฒ์ ์ผ๋ก ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ฌธ์ ๊ฐ ์์ด ์์ ํ ๊ฒ์ ๋ด๋์์ ๋ ์ฌ๋ฆฐ๋ค.
โ ๋ฒ์ ์ ์์ ^, ~, >, <
ํด๋น ๋ฌธ์๋ค์ ๋ฒ์ ์๋ ํฌํจ๋์ง ์์ง๋ง ์ค์นํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ ๋ ์ด๋ค ๋ฒ์ ์ ์ค์นํ๋์ง ์๋ฆฐ๋ค.
^๋ minor ๋ฒ์ ๊น์ง๋ง ์ค์นํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋ค. npm i express@1.1.1์ด๋ผ๋ฉด 1.1.1์ด์๋ถํฐ 2.0.0๋ฏธ๋ง ๋ฒ์ ๊น์ง ์ค์น๋๋ฉฐ, 1.x.x์ ๊ฐ์ด ํํ ๊ฐ๋ฅํ๋ค.
~์ patch ๋ฒ์ ๊น์ง๋ง ์ค์นํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋ค. npm i express@1.1.1์ด๋ผ๋ฉด 1.1.1์ด์๋ถํฐ 1.2.0๋ฏธ๋ง ๋ฒ์ ๊น์ง ์ค์น๋๋ฉฐ, 1.1.x์ ๊ฐ์ด ํํ ๊ฐ๋ฅํ๋ค.
npm outdated : ์ ๋ฐ์ดํธํ ์์๋ ํจํค์ง๊ฐ ์๋์ง ํ์ธํ ์ ์๋ค. Current์ Wanted๊ฐ ๋ค๋ฅด๋ค๋ฉด ์ ๋ฐ์ดํธ๊ฐ ํ์ํ ๊ฒฝ์ฐ์ด๋ค.
npm update [ํจํค์ง๋ช ] : ํด๋น ํจํค์ง๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋ค.
npm uninstall [ํจํค์ง๋ช ] : ํด๋น ํจํค์ง๋ฅผ ์ ๊ฑฐํ ์ ์๋ค. ์ด๋ npm rm [ํจํค์ง๋ช ]์ผ๋ก ์ค์ฌ์ธ ์ ์๋ค.
npm search [๊ฒ์์ด] : npm์ ํจํค์ง๋ฅผ ๊ฒ์ํ ์ ์๋ค.
npm info [ํจํค์ง๋ช ] : ํจํค์ง์ ์ธ๋ถ ์ ๋ณด๋ฅผ ํ์ ํ ์ ์๋ค.
npm adduser : npm ๋ก๊ทธ์ธ์ ์ํ ๋ช ๋ น์ด์ด๋ค.
npm version [๋ฒ์ ] : package.json์ ๋ฒ์ ์ ์ฌ๋ฆฐ๋ค.
npm deprecate [ํจํค์ง๋ช ] [๋ฒ์ ] [๋ฉ์์ง] : ํด๋น ํจํค์ง๋ฅผ ์ค์นํ ๋ ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๋์ด๋ค. ์์ ์ ํจํค์ง์๋ง ์ด ๋ช ๋ น์ด๋ฅผ ์ ์ฉํ ์ ์๋ค.
1. npm ์น ์ฌ์ดํธ์์ ํ์๊ฐ์ ํ๋ค.
2. ์ฝ์์์ npm adduser ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์ฌ ์์ฑํ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ๋ค.
3. npm publish ๋ช ๋ น์ด๋ก ์์ ์ด ๋ง๋ ํจํค์ง๋ฅผ ๋ฐฐํฌํ๋ค.
npm info [ํจํค์ง๋ช ]์ ์ ๋ ฅํ๋ฉด ๋๊ตฐ๊ฐ๊ฐ ์ด๋ฆ์ ์ฌ์ฉํ๊ณ ์๋์ง ํ์ธํ ์ ์๋ค. ํจํค์ง์ ๋ํ ์ ๋ณด๊ฐ ๋์จ๋ค๋ฉด ๋๊ตฐ๊ฐ ์ฌ์ฉํ๊ณ ์๋ ์ด๋ฆ์ด๊ณ , npm ERR! code E404๊ฐ ๋ฐ์ํ๋ค๋ฉด ์ฌ์ฉํด๋ ๋๋ ์ด๋ฆ์ด๋ค.
npm์ ํจํค์ง ์ด๋ฆ์ด ๊ฒน์น๋ ๊ฒ์ ํ์ฉํ์ง ์๋๋ค. ๋ง์ฝ ํด๋น ํจํค์ง๊ฐ ํ๋ฐํ๊ฒ ์ ์ง๋๋ค๋ฉด, ๋ค๋ฅธ ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํ๋ค. npm owner ls [ํจํค์ง๋ช ]์ผ๋ก ํด๋น ํจํค์ง ์ ์ ์์ ์ด๋ฉ์ผ์ ํ์ธํ๊ณ ํจํค์ง๋ฅผ ์ ์ง ์ค์ธ์ง ๋ฌธ์ํ๋ ๋ฉ์ผ์ ๋ณด๋ผ ์๋ ์๋ค.
โ ๋ฐฐํฌํ ํจํค์ง ์ญ์
๋ฐฐํฌํ ํจํค์ง๋ 72์๊ฐ์ด ์ง๋๋ฉด ์ญ์ ํ ์ ์๋ค. npm unpulish [ํจํค์ง๋ช ] --force๋ก ๋ฐฐํฌํ ํจํค์ง๋ฅผ ์ญ์ ํ ์ ์๋ค.
1. ๋๋ถ๋ถ์ ์๋ฐ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋จ์ _ _ _๋ผ๋ ์ด๋ฆ์ผ๋ก _ _ _์ ๋ฑ๋ก๋์ด ์๋ค.
2. ํจํค์ง๊ฐ ๋ค๋ฅธ ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ, ์ด๋ฐ ๊ด๊ณ๋ฅผ _ _ _ _๋ผ ๋ถ๋ฅธ๋ค.
3. ํ์ด์ค๋ถ์ด ๋ด๋์ ํจํค์ง ๋งค๋์ ๋ก, npm ์๋ฒ๊ฐ ๋๋ฆด ๊ฒฝ์ฐ _ _ _ _์ผ๋ก ํจํค์ง๋ฅผ ๋์ ์ค์นํ ์ ์๋ค.
4. ์ค์นํ ํจํค์ง์ ๋ฒ์ ์ ๊ด๋ฆฌํ๋ ํ์ผ์ _ _ _ _ _ _ _ _ _ _ _ _์ด๋ค.
5. _ _ _ ๋ช ๋ น์ด๋ฅผ ๋ถ์ฌ ์คํํ๋ฉด ํจํค์ง๋ฅผ ์ ์ญ ์ค์นํ ๊ฒ๊ณผ ๊ฐ์ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
6. ๋ ธ๋ ํจํค์ง๋ค์ ๋ฒ์ ์ ์ฒซ ๋ฒ์งธ ์๋ฆฌ๋ _ _ _ _ _๋ฒ์ , ๋ ๋ฒ์งธ ์๋ฆฌ๋ _ _ _ _ _๋ฒ์ , ์ธ ๋ฒ์งธ ์๋ฆฌ๋ _ _ _ _ _๋ฒ์ ์ด๋ค.
7. npm _ _ _ _ _ _ _ ๋ช ๋ น์ด๋ก ์์ ์ด ๋ง๋ ํจํค์ง๋ฅผ ๋ฐฐํฌํ ์ ์๋ค.
1. ์ํ๋ ํจํค์ง๋ฅผ ์ค์นํ๊ณ ๋ค์ ์ญ์ ํด๋ณด์ธ์.
2. ์๋ก์ด ํจํค์ง๋ฅผ ๋ฐฐํฌํ๊ณ ์ญ์ ํด๋ณด์ธ์.
1. ํจํค์ง, npm
2. ์์กด ๊ด๊ณ
3. yarn
4. package.json
5. npx
6. major, minor, patch
7. publish
1.
$ npm install [์ํ๋ํจํค์ง๋ช
]
$ npm uninstall [์ํ๋ํจํค์ง๋ช
]
2.
//index.js
module.exports = () => {
return 'my package';
};
$ npm publish
$ npm info [ํจํค์ง๋ช
]
$ npm unpublish [ํจํค์ง๋ช
] --force
$ npm info [ํจํค์ง๋ช
]
[Node.js] 7์ฅ MySQL (0) | 2022.11.10 |
---|---|
[Node.js] 6์ฅ ์ต์คํ๋ ์ค ์น ์๋ฒ ๋ง๋ค๊ธฐ (0) | 2022.11.05 |
[Node.js] 4์ฅ http ๋ชจ๋๋ก ์๋ฒ ๋ง๋ค๊ธฐ (0) | 2022.10.06 |
[Node.js] 3์ฅ ๋ ธ๋ ๊ธฐ๋ฅ (0) | 2022.09.29 |
[Node.js] 3์ฅ ๋ ธ๋ ๊ธฐ๋ฅ (0) | 2022.09.22 |