๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
React

์‚ฌ๋‚ด Nexus ์ €์žฅ์†Œ์— npm ์ €์žฅ์†Œ ๊ตฌ์ถ•ํ•˜๊ณ  ๋ฆฌ์•กํŠธ ํŒจํ‚ค์ง€ ๋ฐฐํฌ ๋ฐ ์„ค์น˜ํ•˜๊ธฐ

by LasBe 2024. 1. 24.
๋ฐ˜์‘ํ˜•

๐Ÿ“’ Nexus npm repository ๊ตฌ์ถ•


์‚ฌ๋‚ด์—์„œ ์—ฌ๋Ÿฌ ํ”„๋กœ์ ํŠธ๋“ค์„ ์ง„ํ–‰ํ•˜๋ฉฐ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋งŒ๋“ค์–ด๋‘๊ณ  ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

 

ํ•ญ์ƒ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋งŒ๋“ค์–ด๋งŒ ๋‘๊ณ  ๊ทธ์ € ํŒŒ์ผ์„ ๋ณต์‚ฌ ๋ถ™์—ฌ ๋„ฃ๊ธฐ ํ•˜๋ฉฐ ์กฐ๊ธˆ์”ฉ ์ˆ˜์ •ํ•˜๋‹ค ๋ณด๋‹ˆ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ๊ฐ๋‹น์ด ์•ˆ ๋์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋ž˜์„œ ์ด ์ฐธ์— ๋ฐฑ์—”๋“œ ํŒ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” Nexus์„œ๋ฒ„๋„ ์ด๋ฏธ ์žˆ๊ฒ ๋‹ค, ์—ฌ๊ธฐ์— private npm repository๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์œ ํ‹ธ, ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ, ๋””์ž์ธ ์‹œ์Šคํ…œ์„ ์ œ๋Œ€๋กœ ํŒจํ‚ค์ง€ํ™”ํ•ด์„œ ๊ด€๋ฆฌํ•ด ๋ณด๊ธฐ๋กœ ๋‹ค์งํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ ๊ทธ ํ—˜๋‚œํ•œ ๊ณผ์ •์˜ ์ฒซ ๋ฒˆ์งธ ๊ณผ์ •.

npm repository ๊ตฌ์ถ•๊ณผ ํŒจํ‚ค์ง€ ๋นŒ๋“œ ๊ทธ๋ฆฌ๊ณ  publish์™€ install ํ•˜๋Š” ๊ณผ์ •์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

Nexus Repository๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์•„ํ‹ฐํŒฉํŠธ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ, Maven, npm, NuGet ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ํŒจํ‚ค์ง€ ํ˜•์‹์˜ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ฐœ๋ฐœ์ž๋“ค์€ ํ•„์š”ํ•œ ์ข…์†์„ฑ์„ ์‰ฝ๊ฒŒ ์ฐพ๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํšจ์œจ์ ์ธ ํ˜‘์—… ๋ฐ ๋นŒ๋“œ ๊ด€๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.

๐Ÿ“Œ Blob Stores ์ƒ์„ฑ

Nexus์— Blob Stores์™€ Repositories์˜ ๊ฐœ๋…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Blob Store: ๋ฌผ๋ฆฌ์  ์ €์žฅ์†Œ
  • Repositories: ๋…ผ๋ฆฌ์  ์ €์žฅ์†Œ

๊ทธ๋ ‡๊ธฐ์— ์ €์žฅ์†Œ ๊ตฌ์ถ•์— ์•ž์„œ ์‹ค์งˆ์ ์œผ๋กœ ํŒŒ์ผ์ด ์ €์žฅ๋˜๋Š” ๋ฌผ๋ฆฌ์  ๊ณต๊ฐ„์„ ๋งŒ๋“ค์–ด ์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

SettingsBlob StoresCreate blob stroe


๐Ÿ“Œ Repository ์ƒ์„ฑ

์šฐ๋ฆฌ๊ฐ€ ์‹ค์งˆ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” repository ์ฃผ์†Œ๋Š” ์ด Repository๋ฅผ ํ†ตํ•ด ๋งŒ๋“ค์–ด์ง‘๋‹ˆ๋‹ค.

 

repository๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฃผ๋กœ 3๊ฐ€์ง€ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  1. hosted
    ์‚ฌ๋‚ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ ํŒจํ‚ค์ง€๋ฅผ ์ €์žฅํ•˜๊ณ  ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  2. proxy
    maven์ด๋‚˜ npm์—์„œ ์ œ๊ณตํ•˜๋Š” ํŒจํ‚ค์ง€๋ฅผ ์บ์‹œ ํ•˜๊ฑฐ๋‚˜ proxy ํ•ด์„œ ์„ค์น˜ ์†๋„์— ์ด์ ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  3. group
    Group ์ €์žฅ์†Œ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ €์žฅ์†Œ(Hosted ๋ฐ Proxy ํฌํ•จ)๋ฅผ ํ•˜๋‚˜์˜ URL๋กœ ๊ทธ๋ฃนํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ์ž๋Š” ์—ฌ๋Ÿฌ ์ €์žฅ์†Œ์— ๊ฑธ์ณ ์žˆ๋Š” ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ๋‹จ์ผ ์ ‘์ ์„ ํ†ตํ•ด ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €ํฌ๋Š” ์ด ์ค‘ hosted๋กœ repo๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

 

SettingCreate repositorynpm (hosted)Create repository

์—ฌ๊ธฐ์„œ Name์— ์ด๋ฆ„์„ ์ ์–ด์ฃผ๊ณ  ์•„๊นŒ ๋งŒ๋“ค์–ด๋‘์—ˆ๋˜ Blob Storage์„ ๋“ฑ๋กํ•ด ์ค€ ํ›„ Create repository๋ฅผ ๋ˆŒ๋Ÿฌ ์ƒ์„ฑํ•ด ์ค๋‹ˆ๋‹ค.


๐Ÿ“Œ Role ์ƒ์„ฑ

์ƒ์„ฑํ•œ repo์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” role์„ ์ƒ์„ฑํ•˜๊ณ  ๊ณ„์ •์— ๋“ฑ๋กํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

repo์— ๋Œ€ํ•œ ๊ถŒํ•œ์€ 2๊ฐ€์ง€๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

  • nx-repository-admin-{์ €์žฅ์†Œ ์ข…๋ฅ˜}-{์ €์žฅ์†Œ ์ด๋ฆ„}-{์ž‘์—…}: ํ•ด๋‹น ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์„ค์ •
  • nx-repository-view-{์ €์žฅ์†Œ ์ข…๋ฅ˜}-{์ €์žฅ์†Œ ์ด๋ฆ„}-{์ž‘์—…}: ํ•ด๋‹น ์ €์žฅ์†Œ์— ๋Œ€ํ•œ ์‚ฌ์šฉ

admin ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ์ƒ๋‹จ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด ๋ฒ„ํŠผ์—์„œ ์„ค์ •์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ณ , view ๊ถŒํ•œ์ด ์žˆ์œผ๋ฉด ํ†ฑ๋‹ˆ๋ฐ”ํ€ด ์ขŒ์ธก repo๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์œ„์—์„œ ๋งˆ์ง€๋ง‰์— ํ•ด๋‹น๋˜๋Š” 5๊ฐ€์ง€ ์ž‘์—… ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. add (์ถ”๊ฐ€)
    • ๊ธฐ๋Šฅ: ์ด ๊ถŒํ•œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ƒˆ๋กœ์šด ์•„ํ‹ฐํŒฉํŠธ๋‚˜ ์ปจํ…์ธ ๋ฅผ Nexus ์ €์žฅ์†Œ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ ์šฉ: ๊ฐœ๋ฐœ์ž๋‚˜ ๋ฐฐํฌ ํŒ€์ด ์ƒˆ๋กœ์šด ๋นŒ๋“œ๋‚˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•  ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  2. browse (ํƒ์ƒ‰)
    • ๊ธฐ๋Šฅ: Browse ๊ถŒํ•œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ํƒ์ƒ‰ํ•˜๊ณ , ์•„ํ‹ฐํŒฉํŠธ์˜ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ, ์•„ํ‹ฐํŒฉํŠธ์˜ ์‹ค์ œ ๋‚ด์šฉ์„ ์ฝ๊ฑฐ๋‚˜ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์€ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • ์ ์šฉ: ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๋‚˜ ์™ธ๋ถ€ ์ดํ•ด๊ด€๊ณ„์ž๊ฐ€ ์ €์žฅ์†Œ์˜ ๋‚ด์šฉ์„ ํ™•์ธํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
  3. delete (์‚ญ์ œ)
    • ๊ธฐ๋Šฅ: ์ด ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๋Š” ์ €์žฅ์†Œ์—์„œ ์•„ํ‹ฐํŒฉํŠธ๋‚˜ ์ปจํ…์ธ ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • ์ ์šฉ: ๊ด€๋ฆฌ์ž๋‚˜ ํŠน์ • ๊ถŒํ•œ์„ ๊ฐ€์ง„ ์‚ฌ์šฉ์ž๊ฐ€ ์˜ค๋ž˜๋œ ๋˜๋Š” ๋ถˆํ•„์š”ํ•œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ์ •๋ฆฌํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  4. edit (ํŽธ์ง‘)
    • ๊ธฐ๋Šฅ: Edit ๊ถŒํ•œ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ €์žฅ์†Œ์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋‚˜ ๊ตฌ์„ฑ ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•„ํ‹ฐํŒฉํŠธ ์ž์ฒด์˜ ์ˆ˜์ •์ด ์•„๋‹ˆ๋ผ ์ €์žฅ์†Œ ์„ค์ •์˜ ์ˆ˜์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ์ ์šฉ: ์ €์žฅ์†Œ ๊ด€๋ฆฌ์ž๋‚˜ DevOps ํŒ€์ด ์ €์žฅ์†Œ ์„ค์ •์„ ์ตœ์ ํ™”ํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๋•Œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  5. read (์ฝ๊ธฐ)
    • ๊ธฐ๋Šฅ: Read ๊ถŒํ•œ์€ ์•„ํ‹ฐํŒฉํŠธ์˜ ์‹ค์ œ ๋‚ด์šฉ์„ ์ฝ๊ณ  ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
    • ์ ์šฉ: ๋Œ€๋ถ€๋ถ„์˜ ๊ฐœ๋ฐœ์ž์™€ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ๊ถŒํ•œ์œผ๋กœ, ์•„ํ‹ฐํŒฉํŠธ์˜ ์˜์กด์„ฑ ํ•ด๊ฒฐ์ด๋‚˜ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์—์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ทœ๋ชจ๊ฐ€ ํด์ˆ˜๋ก ๊ถŒํ•œ์„ ์„ธ๋ถ„ํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์ง€๋งŒ ์ €ํฌ๋Š” ์†Œ๊ทœ๋ชจ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ ๊ณ„์ •์œผ๋กœ ํ•ด๋‹น repo์— ๋Œ€ํ•œ ๋ชจ๋“  ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด ๊ด€๋ฆฌํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

 

๊ทธ๋Ÿผ Role์„ ์ƒ์„ฑํ•ด ์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.

 

view์™€ admin์— ๋Œ€ํ•œ 5๊ฐ€์ง€ ์ž‘์—… ๊ถŒํ•œ์„ ์™€์ผ๋“œ์นด๋“œ๋กœ ๋ชจ๋‘ ํฌํ•จ์‹œํ‚จ npm-admin์ด๋ž€ ๊ทœ์น™์„ ์„ค์ •ํ•˜๊ณ  ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ User ์ƒ์„ฑ

SettingCreate local user

 

๋ญ ๊ทธ๋ƒฅ Id, Password, Email ์ ์–ด์ฃผ๊ณ  Status๋ฅผ Active, ๋งˆ์ง€๋ง‰์œผ๋กœ ์œ„์—์„œ ์„ค์ •ํ•œ Roles๋ฅผ ๋“ฑ๋กํ•˜๊ณ  Create local user ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๊ณ„์ •์„ ์ƒ์„ฑํ•ด ์ค๋‹ˆ๋‹ค.


๐Ÿ“Œ Realms ์„ค์ •

Realms์— npm Bearer Token Realm์„ Active๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

 

์ด๊ฑธ ์„ค์ •ํ•˜์ง€ ์•Š์œผ๋ฉด npm login ํ›„ ํด๋ผ์ด์–ธํŠธ ↔ nexus ๊ฐ„ ํ† ํฐ ๋ฐฉ์‹์˜ ์ธ์ฆ์ด ๋˜์ง€ ์•Š์•„ E401 ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ํŒจํ‚ค์ง€ ๋ฐฐํฌ

์ฒ˜์Œ์— ๋งŒ๋“ค์–ด๋‘” Repository ์„ค์ •์„ ๋“ค์–ด๊ฐ€ ๋ณด๋ฉด ํ•ด๋‹น URL์ด ์žˆ์Šต๋‹ˆ๋‹ค.

publish ํ•˜๋ ค๋Š” ํŒจํ‚ค์ง€์˜ package.json์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ €์žฅ์†Œ ์ •๋ณด๋ฅผ ์ ์–ด์ค๋‹ˆ๋‹ค.

{
  ...
  "publishConfig": {
    "registry": "์ €์žฅ์†Œ_npm_repository_์ฃผ์†Œ"
  },
  ...
}

๐Ÿ”Ž npm login

์„ค์ •์„ ์™„๋ฃŒํ•œ ํŒจํ‚ค์ง€๋ฅผ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๊ฒŒ ์œ„ URL๋กœ ๋กœ๊ทธ์ธํ•ด ์ค๋‹ˆ๋‹ค.

$ npm login --registry=์œ„์—_์žˆ๋Š”_์ €์žฅ์†Œ_URL
$ Username: ์œ„์—์„œ_๋งŒ๋“ _๊ณ„์ •_ID
$ Password: ์œ„์—์„œ_๋งŒ๋“ _๊ณ„์ •_PW
$ Email: ๋ณธ์ธ_์ด๋ฉ”์ผ

๐Ÿ”Ž ๋ฐฐํฌ

$ npm publish

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ด ์ •์ƒ์ ์œผ๋กœ ๋ฐฐํฌ๋˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค.

nexus์—์„œ ํ™•์ธํ•ด ๋ด๋„ ์ž˜ ์˜ฌ๋ผ๊ฐ„ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


๐Ÿ”Ž React+TS ์ปดํฌ๋„ŒํŠธ ํŒจํ‚ค์ง€ ์ปดํŒŒ์ผ

React+TS ์ปดํฌ๋„ŒํŠธ ํŒจํ‚ค์ง€ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ „์— ์˜ฌ๋ฆฐ ๊ธ€์„ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

 

๋‚˜๋งŒ์˜ React + TypeScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ NPM์— ๋ฐฐํฌํ•ด๋ณด์ž

๐Ÿ“’ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— React ํ”„๋กœ์ ํŠธ๋ฅผ ์œ„ํ•œ TypeScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœ, ๋ฒ„์ „ ๊ด€๋ฆฌ, ๊ทธ๋ฆฌ๊ณ  ๋ฐœํ–‰ํ•˜๋Š” ๊ณผ์ •์€ ๊ฐ„๋‹จํ•˜์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ์ค€๋น„ ์‚ฌํ•ญ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๐Ÿ“Œ Node.js ๋ฐ npm ์„ค์น˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐœ๋ฐœ

lasbe.tistory.com


๐Ÿ“Œ ์„ค์น˜

์˜ฌ๋ ธ์œผ๋‹ˆ ๋ฐ›์„ ์ˆ˜๋„ ์žˆ์–ด์•ผ๊ฒ ์ฃ .

 

๊ทธ๋Ÿฌ๋‚˜ ์•„๋ฌด ๊ณ„ํš ์—†์ด ํŒจํ‚ค์ง€ ์ด๋ฆ„์„ ์„ค์ •ํ•˜๋ฉด ๋‚˜์ค‘์— ๊ณจ์น˜ ์•„ํŒŒ์ง‘๋‹ˆ๋‹ค.

 

์™œ๋ƒํ•˜๋ฉด ๊ทธ๋ƒฅ npm install xxx ํ–ˆ์„ ๋•Œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์˜ฌ๋ฆฐ nexus๊ฐ€ ์•„๋‹ˆ๋ผ npm ๊ณต์‹ ์ €์žฅ์†Œ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

ํŒจํ‚ค์ง€๊ฐ€ ์ €์žฅ์†Œ๋ฅผ ์ž˜ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒŒ .npmrc์— ํ•ด๋‹น ํŒจํ‚ค์ง€์— ๋Œ€ํ•œ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•ด๋‘์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒจํ‚ค์ง€_์ด๋ฆ„:registry=https://์ €์žฅ์†Œ_์ด๋ฆ„.com

๊ทธ๋Ÿฐ๋ฐ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ํ•œ๋‹ค๋ฉด ํŒจํ‚ค์ง€๊ฐ€ ๋งŽ์•„์งˆ์ˆ˜๋ก ๋ผ์ธ ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚˜ ๊ด€๋ฆฌํ•˜๊ธฐ ํž˜๋“ค๊ฒ ์ฃ ?

 

๊ทธ๋ž˜์„œ ํŒจํ‚ค์ง€์— @์Šค์ฝ”ํ”„ ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ ํŒจํ‚ค์ง€ ์ด๋ฆ„ ์•ž์— @my-package ๋ผ๊ณ  ์„ค์ •ํ–ˆ์„ ๊ฒฝ์šฐ ์ €์žฅ์†Œ ์ฃผ์†Œ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

@my-package:registry=https://์ €์žฅ์†Œ_์ด๋ฆ„.com

๊ทธ๋Ÿฌ๋ฉด @my-package/util, @my-package/component์™€ ๊ฐ™์€ ํŒจํ‚ค์ง€๋“ค์€ ์Šค์ฝ”ํ”„์— ์˜ํ•ด ํ•ด๋‹น ์ €์žฅ์†Œ์—์„œ ํŒจํ‚ค์ง€๋ฅผ ์ฐพ์•„์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ ๋˜ ๋‹ค๋ฅธ login ๋ฐฉ๋ฒ•

์œ„์—์„œ๋Š” .npmrc ํŒŒ์ผ์— ์ €์žฅ์†Œ ์œ„์น˜๋ฅผ ์„ค์ •ํ–ˆ๋Š”๋ฐ์š”.

 

์‚ฌ์‹ค์€ ์—ฌ๊ธฐ์— ๊ณ„์ •์ •๋ณด๋ฅผ ๋„ฃ์–ด๋‘์–ด ํ•ด๋‹น ์ €์žฅ์†Œ์—์„œ ์•Œ์•„์„œ ์ธ์ฆ์„ ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$ echo -n '๊ณ„์ •_ID:๊ณ„์ •_PW' | openssl base64

๋Œ€์ถฉ ํ„ฐ๋ฏธ๋„์—์„œ ์ด๋ ‡๊ฒŒ ๊ณ„์ • ์ •๋ณด๋ฅผ base64๋กœ ์ธ์ฝ”๋”ฉ ํ•œ ๋’ค .npmrc์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

//์ €์žฅ์†Œ์ฃผ์†Œ:_auth=์ธ์ฝ”๋”ฉ_๊ฒฐ๊ณผ

์œ„ ์ €์žฅ์†Œ ์ฃผ์†Œ๋Š” ํ•ด๋‹น ์ „์ฒด ์ฃผ์†Œ์—์„œ https: ํ˜น์€ http: ๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

 

์ด์™€ ๊ฐ™์ด ์ธ์ฆ์„ ํ•œ๋‹ค๋ฉด ์ถ”ํ›„ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์— ํŒจํ‚ค์ง€ ๋ฐฐํฌ ๋กœ์ง์„ ํƒœ์šธ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.


๋‹ค์Œ์€ ํฐ ๋„์›€์ด ๋๋˜ ๊ธ€์ž…๋‹ˆ๋‹ค.

https://devblog.kakaostyle.com/ko/2022-03-07-1-npm-private-repository/

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


์˜คํ”ˆ ์ฑ„ํŒ