๊ด€๋ฆฌ ๋ฉ”๋‰ด

C-log

๐Ÿ”งํ”„๋กœ์ ํŠธ ์ƒ์„ฑ : NPM&yarn(yarn-berry) ๋ณธ๋ฌธ

โš›๏ธReact/๐Ÿ”งFront-Dev-Environment

๐Ÿ”งํ”„๋กœ์ ํŠธ ์ƒ์„ฑ : NPM&yarn(yarn-berry)

4:Bee 2024. 6. 17. 16:57
728x90

 Nodejs๋Š” ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์ปค์Šคํ…€ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์ž๋™์œผ๋กœ ์„ค์ •๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์ง์ ‘ ์ปค์Šคํ…€์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— Nodejs๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ปค์Šคํ…€์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Nodejs๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์„ค์น˜ ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. (๋ณธ์ธ์€ Nodejs๋ฅผ ์„ค์น˜์™€ ๊ด€๋ฆฌ๋ฆฌ๋ฅผ NVM์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค.) ์ฐธ๊ณ ๋กœ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด ์ฃผ๋ชฉ์ ์ด๋ผ๋ฉด ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๊ณ  ์„œ๋ฒ„๋ฅผ ์œ„ํ•จ์ด๋ผ๋ฉด Nodejs LTS๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค. ์ˆ˜์—…์—์„œ๋Š” nodejs 13.7.0๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋ฉฐ 22.3.0๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ๋”ฐ๋ผ์„œ NVM์œผ๋กœ ์ตœ์‹ ๋ฒ„์ „์„ ๋งž์ถฐ ๋†“์ž.

NVM

//CMD
//์‹คํ–‰ ์ˆœ์„œ
//NVM ์„ค์น˜ ๊ฐ€๋Šฅ ๋ฒ„์ „ ํ™•์ธ
nvm list available

//์›ํ•˜๋Š” ๋ฒ„์ „ ์„ค์น˜
nvm install 22.3.0

//ํ˜„์žฌ ์ ์šฉ ๋ฒ„์ „ ํ™•์ธ
nvm ls

//์›ํ•˜๋Š” ๋ฒ„์ „ ๊ต์ฒด
nvm use 22.3.0

NPM &  yarn(yarn-berry)

์ˆ˜์—…์—์„œ๋Š” NPM์œผ๋กœ ์ง„ํ–‰ํ•˜์ง€๋งŒ ๋ณธ์ธ์€ yarn-berry๋ฅผ ์ƒ์šฉํ•ด์„œ ํŒจํ‚ค์ง€ ๋ฉ”๋‹ˆ์ €๋ฅผ ๊ด€๋ฆฌ ํ•  ๊ฒƒ์ด๋‹ค.

//CMD
//npm์œผ๋กœ yarn ์„ค์น˜
npm install -g yarn

//yarn ๋ฒ„์ „์„ berry๋ฒ„์ „์œผ๋กœ ์„ค์น˜
yarn set version berry

์ด๋ ‡๊ฒŒ ์„ค์น˜๋ฅผ ํ•˜๊ฒŒ๋˜๋ฉด .yarn ํŒŒ์ผ์ด ์ƒ์„ฑ์ด๋˜๋ฉด์„œ ๊ธฐ๋ณธ์ ์ธ package.jsonํŒŒ์ผ์ด ์ƒ์„ฑ์ด ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๋Š” npm init์ด ์•„๋‹Œ yarn์— ๋งž๋Š” ์„ค์น˜๋ฅผ ํ•  ๊ฒƒ์ด๋‹ค.

//CMD
//init์œผ๋กœ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ ๊ธฐ๋ณธ ์„ค์ •
yarn init

๊ทธ๋ ‡๊ฒŒ package.json์„ ๋ณด๊ฒŒ ๋˜๋ฉด ๋ฉ๊ทธ๋Ÿฌ๋‹ˆ name๊ณผ packageManager๋งŒ ๋ฉ๊ทธ๋Ÿฌ๋‹ˆ ๋†“์—ฌ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. yarn์€ ์šฐ๋ฆฌ๊ฐ€ ์ง์ ‘ ํ•˜๋‚˜ ํ•˜๋‚˜ ์„ค์ •ํ•˜๊ณ  ์ข…์†๋˜์–ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„๋“ค์„ ์ž‘์„ฑ ํ•ด์•ผํ•œ๋‹ค. ์ด๊ฒƒ์ด ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์–ด๋ ต๊ฒŒ ๋Š๊ปด์ง„๋‹ค๋ฉด ๊ธฐ๋ณธ์ ์ธ npm์„ ์‚ฌ์šฉํ•˜๋ผ.

//package.json
{
  "name": "Frontend-Development-Environment",
  "packageManager": "yarn@4.3.0",
}

์ด๋Ÿฌํ•œ ์ฝ”๋“œ๋ฅผ ์šฐ๋ฆฌ๋Š” ์ง์ ‘ ์ž‘์„ฑํ•ด์•ผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•˜๋ฉด ๋œ๋‹ค.

//package.json
{
  "name": "Frontend-Development-Environment",
  "version": "1.0.0",
  "packageManager": "yarn@4.3.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

์œ„์˜ ๊ฐ ์„ค์ • ์„ค๋ช…์€ ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

  • name: ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„์„ "Frontend-Development-Environment"๋กœ ์ •์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • version: ํ”„๋กœ์ ํŠธ์˜ ๋ฒ„์ „์„ "1.0.0"๋กœ ์„ค์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๊ธฐ ๋ฆด๋ฆฌ์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • packageManager: "yarn@4.3.0"์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ”„๋กœ์ ํŠธ๊ฐ€ Yarn Berry๋ฅผ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • main: ํ”„๋กœ์ ํŠธ์˜ ๋ฉ”์ธ ์ง„์ž… ํŒŒ์ผ์„ "index.js"๋กœ ์„ค์ •ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์€ ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๊ฐ€์žฅ ๋จผ์ € ๋กœ๋“œ๋˜๋Š” ํŒŒ์ผ์ž…๋‹ˆ๋‹ค.
  • scripts: "test" ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ •์˜๋˜์–ด ์žˆ์œผ๋ฉฐ, ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์˜๋˜์ง€ ์•Š์•˜์„ ๋•Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋น„์ •์ƒ ์ข…๋ฃŒ๋ฅผ ์‹œ๋„ํ•˜๋Š” ๋ช…๋ น์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
    • "test" ์Šคํฌ๋ฆฝํŠธ์˜ ์—ญํ• :
      • ๋ช…๋ น ์‹คํ–‰: "echo \"Error: no test specified\" && exit 1" ์ด ๋ช…๋ น์€ ๋‘ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
        • echo ๋ช…๋ น: "Error: no test specified" ๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ˜์†”์— ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์•„์ง ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์Œ์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์•Œ๋ฆฌ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
        • exit ๋ช…๋ น: && ์—ฐ์‚ฐ์ž๋Š” ์ฒซ ๋ฒˆ์งธ ๋ช…๋ น(echo)์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋œ ํ›„์— ๋‘ ๋ฒˆ์งธ ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. exit 1์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ƒํƒœ ์ฝ”๋“œ 1๋กœ ์ข…๋ฃŒ์‹œํ‚ต๋‹ˆ๋‹ค. ์ƒํƒœ ์ฝ”๋“œ 1์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์˜ค๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ์ด๋Š” ํ…Œ์ŠคํŠธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํŒจํ–ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  • author: ์ž‘์„ฑ์ž ์ •๋ณด๋Š” ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • license: ๋ผ์ด์„ ์Šค๋Š” "ISC"๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด์„ ์Šค ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ ๋กœ package.json ํŒŒ์ผ์˜ scripts ์„น์…˜์—์„œ ์ •์˜ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋Š” Yarn์ด๋‚˜ npm์—์„œ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•œ๋‹ค.

//command npm ์ค‘์—์„œ...

All commands:

    access, adduser, audit, bugs, cache, ci, completion,
    config, dedupe, deprecate, diff, dist-tag, docs, doctor,
    edit, exec, explain, explore, find-dupes, fund, get, help,
    help-search, hook, init, install, install-ci-test,
    install-test, link, ll, login, logout, ls, org, outdated,
    owner, pack, ping, pkg, prefix, profile, prune, publish,
    query, rebuild, repo, restart, root, run-script, sbom,
    search, set, shrinkwrap, star, stars, start, stop, team,
    test, token, uninstall, unpublish, unstar, update, version,
    view, whoami

์ถ”๊ฐ€์ ์œผ๋กœ package.jsonํŒŒ์ผ์„ ์ˆ˜์ •์„ ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

//package.json

{
  "name": "Frontend-Development-Environment",
  "version": "1.0.0",
  "packageManager": "yarn@4.3.0",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "echo \"์—ฌ๊ธฐ์— ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.\"",
    "start": "echo \"์—ฌ๊ธฐ์— ์Šคํƒ€ํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.\""
  },
  "author": "",
  "license": "ISC"
}

์ด scripts๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑ์„ ํ•˜๋ฉด ๋œ๋‹ค.

//CMD

yarn run build
์—ฌ๊ธฐ์— ๋นŒ๋“œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

yarn run start
์—ฌ๊ธฐ์— ์Šคํƒ€ํŠธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ npm์ด ์•„๋‹Œ yarn์„ ํ†ตํ•ด์„œ package.json์˜ ๊ธฐ๋ณธ์ ์ธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์™€ ์„ค์ •์„ ํ•ด ๋ณด์•˜๋‹ค. ๋งˆ์ง€๋ง‰ ์ฐธ๊ณ ํ•œ ๋ธ”๋กœ๊ทธ๋Š” ๋ฆฌ์•กํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ yarn์„ ํ†ตํ•ด์„œ ํŒจํ‚ค์ง€ ์ข…์† ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋ฆฌ์•กํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒจํ‚ค์ง€๋ฅผ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๋“ฏ ํ•˜๋‹ค. ์ถ”ํ›„์— ์‹œ๊ฐ„์ด ๋œ๋‹ค๋ฉด yarn์— ๋Œ€ํ•œ ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค.

728x90
Comments