Cli: [BUG]`main`이 νŒ¨ν‚€μ§€μ— 없어도`npm pack`이 μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œ 됨

에 λ§Œλ“  2020λ…„ 05μ›” 15일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: npm/cli

뭐? μ™œ

우리 νšŒμ‚¬μ˜ λ‚΄λΆ€ νŒ¨ν‚€μ§€ 쀑 ν•˜λ‚˜κ°€ 일뢀 λ¦¬νŒ©ν† λ§μ„ μˆ˜ν–‰ν•˜κ³  package.jsonμ—μ„œ main λ₯Ό μ—…λ°μ΄νŠΈν•˜λŠ” 것을 κΈ°μ–΅ν•˜μ§€ μ•Šκ³  μ €μž₯μ†Œμ˜ λ‹€λ₯Έ 곳으둜 μ§„μž… 점을 μ΄λ™ν–ˆμ„ λ•Œμ΄λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. μ΅œμ’… κ²°κ³ΌλŠ” npm pack ν–‰λ³΅ν•˜κ²Œ λ§Œλ“€μ–΄ μ œλŒ€λ‘œ μž‘λ™ ν•  κΈ°νšŒκ°€μ—†λŠ” νŒ¨ν‚€μ§€λ₯Ό κ²Œμ‹œ ν•  μˆ˜μžˆκ²Œν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

μ–Έμ œ

npm pack 및 npm publish μ‹€ν–‰μ‹œ

μ–΄λ””

μ–΄λ–»κ²Œ

ν˜„μž¬ 행동

npm pack λŠ” main κ°€ tarball에 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ†ŒλΉ„μžκ°€ μ‚¬μš©ν•  μˆ˜μ—†λŠ” νŒ¨ν‚€μ§€λ₯Ό μ‰½κ²Œ λ§Œλ“€κ³  κ²Œμ‹œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

μž¬ν˜„ 단계

  • 빈 디렉터리 λ§Œλ“€κΈ°
  • npm init 및 κΈ°λ³Έκ°’μœΌλ‘œ λͺ¨λ“  것을 λ§Œλ“œλŠ” 단계λ₯Ό μˆ˜ν–‰ν•©λ‹ˆλ‹€. 이와 같은 package.json λ°›κ²Œλ©λ‹ˆλ‹€.
{
  "name": "npm-repro",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC"
}
  • 이 λ””λ ‰ν† λ¦¬μ—μ„œ npm pack λ₯Ό μ‹€ν–‰ν•˜κ³  tarball이 ν–‰λ³΅ν•˜κ²Œ μƒμ„±λ˜μ—ˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
npm notice
npm notice πŸ“¦  [email protected]
npm notice === Tarball Contents ===
npm notice 205B package.json
npm notice === Tarball Details ===
npm notice name:          npm-repro
npm notice version:       1.0.0
npm notice filename:      npm-repro-1.0.0.tgz
npm notice package size:  241 B
npm notice unpacked size: 205 B
npm notice shasum:        ca39bc17447e27ef2fd0dea656e0e6b473f310d7
npm notice integrity:     sha512-p8tZD8W438r7t[...]7Oo0YMcAoNPzQ==
npm notice total files:   1
npm notice
npm-repro-1.0.0.tgz

index.js κ°€ μ—†μœΌλ―€λ‘œμ΄ νŒ¨ν‚€μ§€λ₯Ό μ‚¬μš©ν•˜λ €κ³  μ‹œλ„ν•˜λ©΄ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μ˜ˆμƒλ˜λŠ” λ™μž‘

  • npm pack λŠ” 0이 μ•„λ‹Œ μ’…λ£Œ μ½”λ“œλ‘œ μ’…λ£Œλ©λ‹ˆλ‹€.이 κ²½μš°μ—λ„ npm publish κ°€ μ‹€νŒ¨ν•˜κ³  package.json 의 main κ°€ ν¬ν•¨λ˜μ§€ μ•Šμ€ νŒ¨ν‚€μ§€κ°€ tarball에 ν¬ν•¨λ˜μ§€ μ•Šλ„λ‘ν•©λ‹ˆλ‹€ package.json κ°€ λ ˆμ§€μŠ€νŠΈλ¦¬μ— κ²Œμ‹œλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

WHO

우리 νšŒμ‚¬λŠ” λ‚΄λΆ€ λ ˆμ§€μŠ€νŠΈλ¦¬μ— κ²Œμ‹œν•˜λ €κ³  ν•  λ•Œμ΄ 문제λ₯Ό κ²ͺμ—ˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³  λ¬Έν—Œ

  • ν•΄λ‹Ή 사항 μ—†μŒ

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

ν•©λ¦¬μ μœΌλ‘œ λ“€λ¦½λ‹ˆλ‹€. μ–΄λ–€ 이유둜 λ“  우리 νšŒμ‚¬λŠ” κ²Œμ‹œκ°€ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜λŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ npm pack 을 ν…ŒμŠ€νŠΈλ‘œ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. npm publish --dry-run κ°€ 더 λ‚˜μ€ μˆ˜ν‘œ 일 κ²ƒμž…λ‹ˆλ‹€.

λͺ¨λ“  3 λŒ“κΈ€

이것이 npm-packlist 의 λ²„κ·Έλ‘œ 더 μ ν•©ν•œ 지 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. npm 쑰직이 μ–΄λ–»κ²Œ λ‘˜ μ‚¬μ΄μ˜ 문제λ₯Ό 계속 λΆ„λ¦¬ν•˜κ³  μ‹Άμ–΄ν•˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. 즉, npm-packlist λŠ” μœ νš¨μ„± 검사λ₯Ό μˆ˜ν–‰ν•˜μ§€ μ•Šκ³  포함을 μ‹œλ„ν•΄μ•Όν•˜λŠ” 파일 λͺ©λ‘μ„ λ§Ήλͺ©μ μœΌλ‘œ λ°˜ν™˜ν•˜κ³  npm-packlist 의 κΈ°λŠ₯을 μ‚¬μš©ν•˜λ €λŠ” νŒ¨ν‚€μ§€μ—μ„œ 더 높은 μˆœμ„œμ˜ μœ νš¨μ„± 검사λ₯Ό μˆ˜ν–‰ν•˜λ„λ‘ 남겨 λ‘μ–΄μ•Όν•©λ‹ˆλ‹€. ?

이것은 npm-packlist의 직업이 μ•„λ‹ˆλΌ npm publish 의 μ§μ—…μž…λ‹ˆλ‹€.

ν•©λ¦¬μ μœΌλ‘œ λ“€λ¦½λ‹ˆλ‹€. μ–΄λ–€ 이유둜 λ“  우리 νšŒμ‚¬λŠ” κ²Œμ‹œκ°€ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜λŠ”μ§€ μ—¬λΆ€λ₯Ό ν™•μΈν•˜κΈ° μœ„ν•΄ npm pack 을 ν…ŒμŠ€νŠΈλ‘œ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. npm publish --dry-run κ°€ 더 λ‚˜μ€ μˆ˜ν‘œ 일 κ²ƒμž…λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰