์ง์ ‘๋งŒ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ npm package ๋ฐฐํฌํ•˜๊ธฐ (๋ชจ๋“ˆ ๋ฐฐํฌ, ๋ฒ„์ „์—… ํ›„ ๋ฐฐํฌ์‹คํŒจ์‹œ ์บ์‹œ ์‚ญ์ œ)

2024. 2. 3. 21:58ใ†front-end/JavaScript

728x90

๐Ÿ‘‰ ์ž์‹ ์ด ๋งŒ๋“  ๋ชจ๋“ˆ๋กœ npm package ๋ฐฐํฌํ•˜๋Š” ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค.

git repository ๋ฅผ node ๋กœ ๋งŒ๋“ค์–ด์ค€ ํ›„ clone์„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ index.js ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ sum ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ ๋’ค module.exports ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

module.exports ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ  import ๋ฅผ ํ•ด์˜ค๋ ค๋ฉด export ๋กœ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

npm init ์— -y๋ฅผ ๋ถ™์—ฌ์ฃผ๋ฉด package.json ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค. 

๊ทธ ๋‹ค์Œ npm login ์„ ํ•ด์ค€ ํ›„

npm publish ๋ฅผ ํ•ด์ฃผ๋ฉด ๋ฐฐํฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

access๋ฅผ ์„ค์ •ํ•ด์ฃผ์ง€ ์•Š์•„์„œ

'You muse sign up for private packages' ๋ผ๊ณ  ์—๋Ÿฌ ๋ฌธ๊ตฌ๊ฐ€ ๋‚˜์™”์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ์šฉ๋„๋กœ ์ž‘์—…ํ•œ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— access ์— public ๊ฐ’์„ ์ถ”๊ฐ€ํ•ด์คฌ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ npm publish ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋‹ˆ ๋ฐฐํฌ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ์„ค์น˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

npm i @verysoyoung/npm-text ๊นŒ์ง€๋งŒ ํ•ด๋„๋˜์ง€๋งŒ ๋ฒ„์ „์„ ๋ถ™์—ฌ์„œ ์„ค์น˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์„ค์น˜์„ฑ๊ณต!

module.exports ๋กœ ๋ชจ๋“ˆํ™” ํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— require ์„ ํ†ตํ•ด์„œ ๋ชจ๋“ˆ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ‘‰  es6์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ฑ„ํƒ๋œ ๋ชจ๋“ˆํ™” ๋ฐฉ์‹์ธ export, import ๋กœ ๋ชจ๋“ˆํ™” ํ•˜๊ธฐ 

index2.js ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด์„œ ํ•จ์ˆ˜๋ฅผ export ํ•ด์ค๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ ํŒŒ์ผ์„ ๋ฐฐํฌํ•˜๋ ค๋ฉด ํ•˜๋‚˜์˜ root ํŒŒ์ผ์—์„œ ํŒŒ์ผ์„ ๋ชจ์•„ export ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. (์ด๊ฑด ์ปดํฌ๋„ŒํŠธ ๋ฐฐํฌํ•  ๋•Œ ๋‹ค์‹œ ์˜ฌ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค!)

์ €์žฅ์„ ํ•ด์ค€ ํ›„ ๋ฐฐํฌ๋ฅผ ๋‹ค์‹œํ•˜๋ ค๋ฉด ๋ฒ„์ „์„ ์—…ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. v1.0.0 -> v1.0.1๋กœ ์˜ฌ๋ ธ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  module ์— index2.js๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ๋‹ค์Œ ์ด ์ „ ๋ฐฉ๋ฒ•๊ณผ ๋˜‘๊ฐ™์ด npm publish ๋ฅผ ํ•ด์ค๋‹ˆ๋‹ค.

๋ฐฐํฌ์„ฑ๊ณต!

์ด์ „์— ์„ค์น˜ํ–ˆ๋˜ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฒ„์ „์„ ์—…ํ•ด์„œ ์„ค์น˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

'No matching version found for' npm package.. ๋ผ๊ณ  ๋‚˜์™”๋Š”๋ฐ 

๋ฐฐํฌ๋Š” ๋˜์—ˆ์œผ๋‚˜ npm package ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ฐพ์•„๋ณด๋‹ˆ ์บ์‹œ ๋•Œ๋ฌธ์ธ๊ฑธ๋กœ ํŒ๋‹จํ•˜๋ฉฐ

npm cache clean --force ๋กœ ์บ์‹œ๋ฅผ ์ง€์›Œ์คฌ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ ์„ค์น˜ํ•˜๋‹ˆ ์„ค์น˜์„ฑ๊ณต!

import ๋กœ ํ•จ์ˆ˜๋ฅผ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค. 

console.log ๋กœ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•ด๋ณด๋‹ˆ ์ž˜ ๋‚˜์˜ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋“ˆ์— ํƒ€์ž…์„ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„์„œ ์ƒ๊ธฐ๋Š” ์—๋Ÿฌ์ž…๋‹ˆ๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ๋‹ค์‹œ ๋ฐฐํฌํ•˜๋Š” ๊ฑธ๋กœ,,

 

๐Ÿ‘‰ ์ฒ˜์Œ์œผ๋กœ npm package ๋ฅผ ๋ฐฐํฌํ•ด๋ดค๋Š”๋ฐ, ๊ทธ๋ƒฅ ํ•จ์ˆ˜์˜€์ง€๋งŒ ๋‹ค์Œ์—๋Š” ๋‚˜๋งŒ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ESLint ๋“ฑ์„ ํŒจํ‚ค์ง€๋กœ ๋ฐฐํฌํ•ด์„œ ์‚ฌ์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•  ๊ฒƒ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค. ์•ฝ๊ฐ„ ์„ค๋ ˆ๋Š” ๋งˆ์Œ,, ๋‘๊ทผ๋‘๊ทผ 

๋‹ค์Œ ๋ชจ๋“ˆ์€ ์ž‘์—…ํ•  ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋‚ด๊ฐ€ ์ฒ˜์Œ์œผ๋กœ ๋ฐฐํฌํ•œ npm ํŒจํ‚ค์ง€ 

https://www.npmjs.com/package/@verysoyoung/npm-text

์ž๋™ ๋ฐฐํฌ ์‹œ์Šคํ…œ (์ปค๋ฐ‹ ๋ฉ”์‹œ์ง€๋ฅผ ์ผ๊ด€์ ์œผ๋กœ ์ž‘์„ฑํ•˜์—ฌ ์ด ์‹œ๋งจํ‹ฑ ๋ฒ„์ „ ์„ ์ž๋™ํ™” ํ•ด์ฃผ๋Š” ๋„๊ตฌ) 

https://semantic-release.gitbook.io/semantic-release/

728x90