๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Development

[npm].npmrc

by DevIseo 2023. 1. 19.

npmrc ํŒŒ์ผ์ด๋ž€?

๐Ÿ’ก npm์—์„œ ์„ค์ •์„ ์ €์žฅํ•ด๋‘๋Š” ํŒŒ์ผ ๋‚ด์žฅ(builtin), ์ „์—ญ(global), ์‚ฌ์šฉ์ž(user), ํ”„๋กœ์ ํŠธ(project) 4๊ฐ€์ง€ ๋ฒ”์œ„์˜ npmrc ํŒŒ์ผ์ด ์กด์žฌ

 

  • ๋‚ด์žฅ ์„ค์ •
    • npm์ด ์„ค์น˜๋œ ๊ฒฝ๋กœ์— ์žˆ๋Š” npmrc ํŒŒ์ผ์— ๋ช…์‹œ๋จ
    • ๋ชจ๋“  ๊ธฐ๋ณธ ์„ค์ •์„ ๋‹ด๊ณ  ์žˆ์Œ
  • ์ „์—ญ ์„ค์ •
    • ๊ฐ™์€ ์ปดํ“จํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์™€ ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์— ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์ ์šฉ
    • ์ผ๋ฐ˜์ ์œผ๋กœ ์ž˜ ๊ฑด๋“ค์ง€ ์•Š์Œ

๋ณดํ†ต, ์‚ฌ์šฉ์ž ๋ฒ”์œ„์™€ ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„์—์„œ npmrc ํŒŒ์ผ์„ ๋‹ค๋ฃธ

⇒ํŒŒ์ผ ๋ช… ์•ž์— . ์„ ๋ถ™์—ฌ ์ˆจ๊ธด ํŒŒ์ผ๋กœ ์‚ฌ์šฉ

  • ์‚ฌ์šฉ์ž ๋ฒ”์œ„
    • ์šด์˜ ์ฒด์ œ์˜ ์‚ฌ์šฉ์ž ํ™ˆ(home) ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜
  • ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„
    • ํ”„๋กœ์ ํŠธ ์ตœ์ƒ์œ„(root) ๋””๋ ‰ํ† ๋ฆฌ์— ์œ„์น˜

ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„๊ฐ€ ์‚ฌ์šฉ์ž ๋ฒ”์œ„๋ณด๋‹ค ์ข์Œ

ํ”„๋กœ์ ํŠธ ์„ค์ •์ด ์‚ฌ์šฉ์ž ์„ค์ •๋ณด๋‹ค ์šฐ์„ ์‹œ

npm config ์ปค๋งจ๋“œ

๐Ÿ’ก npm์€ ์—ฌ๋Ÿฌ npmrc ํŒŒ์ผ์„ ์†์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก npm config ์ปค๋งจ๋“œ ์ œ๊ณต

 

  • npm config ์ปค๋งจ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ --location ๋˜๋Š” -L ์˜ต์…˜์„ ํ†ตํ•ด์„œ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด ์ค„ ์ˆ˜ ์žˆ์Œ.
  • ์ด ์˜ต์…˜์„ global๋กœ ์„ค์ •ํ•˜๋ฉด ์ „์—ญ, user๋กœ ์„ค์ •ํ•˜๋ฉด ์‚ฌ์šฉ์ž, project๋กœ ์„ค์ •ํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋ฒ”์œ„๊ฐ€ ์ ์šฉ
  • default๋Š” user
    • ์‚ฌ์šฉ์ž ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” .npmrcํŒŒ์ผ์„ ์ƒ๋Œ€๋กœ ์ปค๋งจ๋“œ๊ฐ€ ์‹คํ–‰

private npm registry๋ž€?

 ๐Ÿ’ก ์™ธ๋ถ€์ ์œผ๋กœ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š” npm registry

 

private npm registry ์™œ ํ•„์š”?

๐Ÿ’ก private package๋ฅผ ์›ํ•˜๋Š” ๊ฒƒ ๋ณธ์ธ์ด ์†ํ•œ ์กฐ์ง์„ ์œ„ํ•ด npm registry๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒƒ

 

private npm registry๋Š” ์–ด๋–ป๊ฒŒ ๊ตฌ์ถ•?

๐Ÿ’ก verdaccio ํ™œ์šฉ

  • create-react-app, stroybook, angular cli, babel๋“ฑ์ด ์ด๋ฅผ ํ™œ์šฉ

 

  • Use private packages
  • Cache npmjs.org registry
    • npmjs.org ์„œ๋ฒ„๊ฐ€ ๋Š๋ฆฌ๊ฑฐ๋‚˜, ์ฃฝ๊ฒŒ ๋˜๋Š” ์ด์Šˆ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ํ•„์š”ํ•œ ํŒจํ‚ค์ง€๋“ค์„ ์บ์‹œํ•˜์—ฌ ๋Œ€๋น„
  • Link multiple registries
    • ํ•˜๋‚˜์˜ ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ registry ์˜ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ
    • verdaccio ์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ์ธ uplinks ๋ฅผ ์ฐธ๊ณ 
  • Override public packages
    • ๋ณธ์ธ์˜ ํ”„๋กœ์ ํŠธ์— ์˜คํ”ˆ ์†Œ์Šค๋ฅผ ์‚ฌ์šฉ์‹œ, ๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ•˜์—ฌ PR ๋ฅผ ๋‚ ๋ ธ์ง€๋งŒ ์Šน์ธ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ง€์—ฐ๋˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•  ๋•Œ ⇒ ๋ณธ์ธ์ด ๊ตฌ์ถ•ํ•œ npm ์„œ๋ฒ„์— ๋ฐ˜์˜๋œ ์ฝ”๋“œ๋ฅผ ์˜ฌ๋ ค๋†“๊ณ  ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • E2E Testing
    • E2E ํ…Œ์ŠคํŠธ๋Š” publish ํ•˜๋Š” ํŒจํ‚ค์ง€๋“ค์— ๋Œ€ํ•ด ์ฒดํฌ๋ฅผ ์˜๋ฏธ
    • publish - npm ์„œ๋ฒ„์— ์—…๋กœ๋“œ ํ•˜๋Š” ํ–‰์œ„
    • local npm registry ๋ฅผ ํ†ตํ•ด publish ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜
    • create-react-app, storybook ๋“ฑ์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋ฐฉ์‹

 

์‚ฌ์šฉ ๋ฐฉ๋ฒ•

private npm registry ๊ตฌ์ถ• :: ๋งˆ์ด๊ตฌ๋ฏธ

## ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด .npmrc ํŒŒ์ผ์— ์ €์žฅ
$ npm config set @tistory:registry <http://localhost:4873>
//.npmrcํŒŒ์ผ์— ์ง์ ‘ ์…‹ํŒ… ๊ฐ€๋Šฅ
@tistory:registry=http://localhost:4873
  • ์ฐธ๊ณ 
    $ npm install @myorg/mypackage
    
    or
    //.npmrc
    
    //example๋“ค
    @project_a:registry=https://npm.fury.io/AUTH_TOKEN/USER_NAME/
    
    :registry=https://npm.pkg.github.com/
    //npm.pkg.github.com/:_authToken=
    
  • "dependencies": { "@myorg/mypackage": "^1.3.0" }
  • scope | npm Docs

Reference

npmrc ํŒŒ์ผ๊ณผ npm config ์ปค๋งจ๋“œ

.npmrc | pnpm

using myproject/.npmrc with registry

Using a Private NPM Repository (.npmrc) - Colyseus & Arena Cloud Documentation

[NPM] ๋‹ค๋ฅธ npm registry์—์„œ npm ๋ชจ๋“ˆ ๋‹ค์šด๋กœ๋“œํ•˜๊ธฐ

private npm registry ๊ตฌ์ถ• :: ๋งˆ์ด๊ตฌ๋ฏธ

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

๋ฐ”๋ฒจ(Babel)  (0) 2023.06.15
์›นํŒฉ(Webpack)  (0) 2023.06.15
[axios] axios 2  (0) 2023.01.27
[axios] axios 1  (0) 2023.01.21

๋Œ“๊ธ€