Nodemon: λ„μ»€μ—μ„œ Nodemon이 λ‹€μ‹œ μ‹œμž‘λ˜μ§€ μ•ŠμŒ

에 λ§Œλ“  2018λ…„ 11μ›” 12일  Β·  14μ½”λ©˜νŠΈ  Β·  좜처: remy/nodemon

  • nodemon -v : 1.18.6(μ΅œμ‹ )
  • node -v : 10.13
  • 운영 체제/터미널 ν™˜κ²½:

    • Docker 버전 18.06.1-ce, λΉŒλ“œ e68fc7a

    • docker-compose 버전 1.22.0, λΉŒλ“œ f46880f

  • μ‹€ν–‰ν•œ λͺ…λ Ή:

docker-compose.yml :

version: '3.1'

services:
  node:
    image: node:10
    working_dir: /usr/local/src/
    volumes:
      - .:/usr/local/src/
    environment:
      - NODE_ENV=development
    command: bash -c "nodemon --watch src --exec 'node src/server.js'"

μ‹€ν–‰: docker-compose up

μ˜ˆμƒλ˜λŠ” 행동

src/ μ—μ„œ νŒŒμΌμ„ λ³€κ²½ν•˜λ©΄ λ‹€μ‹œ μ‹œμž‘ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μ‹€μ œ 행동

λ‹€μ‹œ μ‹œμž‘ν•˜μ§€ μ•ŠμŒ

μž¬ν˜„ 단계

  1. mkdir -p test/src && touch test/docker-compose.yml && touch test/src/server.js
  2. μœ„ λ‚΄μš©μ„ docker-compose.yml 볡사
  3. cd test && docker-compose up
  4. server.js μ—μ„œ 무언가λ₯Ό λ³€κ²½ν•˜κ³  κ΄€μ°°ν•˜μ‹­μ‹œμ˜€.

μ•Œλ €μ§„ μ†”λ£¨μ…˜

-L ν”Œλž˜κ·Έλ₯Ό μΆ”κ°€ν•˜λ©΄ λͺ¨λ“  것이 잘 μž‘λ™ν•©λ‹ˆλ‹€! μ΅œμ‹  λ²„μ „μ—μ„œ 무언가가 μ£½μ—ˆμŠ΅λ‹ˆλ‹€(https://github.com/docker/labs/issues/378).

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

@remy 이것은 nodemon λ³€κ²½μ˜ μ¦μƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. μ—…κ·Έλ ˆμ΄λ“œ ν›„ dockerμ—μ„œ μž‘λ™ν•˜λ €λ©΄ https://github.com/remy/nodemon#application -isnt-restarting을 따라야 ν–ˆμŠ΅λ‹ˆλ‹€.

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

이것은 nodemon λ¬Έμ œμž…λ‹ˆκΉŒ μ•„λ‹ˆλ©΄ λ„μ»€μž…λ‹ˆκΉŒ?

@remy 이것은 nodemon λ³€κ²½μ˜ μ¦μƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. μ—…κ·Έλ ˆμ΄λ“œ ν›„ dockerμ—μ„œ μž‘λ™ν•˜λ €λ©΄ https://github.com/remy/nodemon#application -isnt-restarting을 따라야 ν–ˆμŠ΅λ‹ˆλ‹€.

이 λ¬Έμ œλŠ” 졜근 ν™œλ™μ΄ μ—†μ—ˆκΈ° λ•Œλ¬Έμ— 유휴 μƒνƒœλ‘œ μžλ™ ν‘œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. 더 이상 ν™œλ™μ΄ λ°œμƒν•˜μ§€ μ•ŠμœΌλ©΄ μžλ™μœΌλ‘œ λ‹«νž™λ‹ˆλ‹€. 이것이 잘λͺ»λ˜μ—ˆλ‹€κ³  μƒκ°ν•˜κ±°λ‚˜ λ¬Έμ œκ°€ μ—¬μ „νžˆ μ§€μ†λ˜λŠ” 경우 λŒ“κΈ€μ— λ‹΅μž₯을 μž…λ ₯ν•˜λ©΄ @remy κ°€ (μ‹œλ„!) 후속 쑰치λ₯Ό
κΈ°μ—¬ν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€ <3

@remy 이에 λŒ€ν•œ 생각이 μžˆμŠ΅λ‹ˆκΉŒ?

λŒ“κΈ€μ„ λ†“μ³€μŠ΅λ‹ˆλ‹€. 이전 λ²„μ „μ˜ nodemon(μ΅œμ‹  도컀 포함)으둜 μ˜λ„ν•œ λ™μž‘μ„ λ³΅μ œν•  수 μžˆμŠ΅λ‹ˆκΉŒ? λ‚˜λŠ” 도컀에 λŒ€ν•œ κ²½ν—˜μ΄ μ—†κΈ° λ•Œλ¬Έμ— λ„μ»€μ—μ„œ μΌμ–΄λ‚˜λŠ” 일의 λ‚΄λΆ€λ₯Ό μ™„μ „νžˆ μ΄ν•΄ν•˜μ§€ λͺ»ν•©λ‹ˆλ‹€.

λ‚˜λŠ” 이 문제λ₯Ό λ””λ²„κΉ…ν•˜λŠ” 데 ν•˜λ£¨ 이상을 λ³΄λƒˆμœΌλ―€λ‘œ λ‚΄κ°€ 배운 것을 μ œκ³΅ν•˜λŠ” 데 도움을 λ“œλ¦¬κ² μŠ΅λ‹ˆλ‹€.

상황에 따라 λΉŒλ“œ ν”„λ‘œμ„ΈμŠ€μ— μΆ”κ°€ 단계가 μžˆμŠ΅λ‹ˆλ‹€. μ½”λ“œ λ³€ν™˜ 및 λ²ˆλ“€λ§μ„ μ²˜λ¦¬ν•˜λŠ” tsc --watch μžˆμŠ΅λ‹ˆλ‹€. μ΄μ „μ—λŠ” 이전 λ²„μ „μ˜ nodemon을 μ‚¬μš©ν•˜μ—¬ 이 μ‹œμŠ€ν…œμ„ λ‘œμ»¬μ—μ„œ μ‹€ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

κ½€ λ§Žμ€ 쑰사λ₯Ό 톡해 λ‚˜λŠ” nodemon이 λ‹€μ‹œ μ‹œμž‘λ˜μ§€ μ•ŠλŠ” λ™μ•ˆ μ—…λ°μ΄νŠΈλœ λΉŒλ“œ 파일이 μ»¨ν…Œμ΄λ„ˆ 자체 λ‚΄μ—μ„œ μ„±κ³΅μ μœΌλ‘œ μ„ νƒλ˜κ³  μžˆμŒμ„ μ•Œμ•„μ°¨λ¦¬κΈ° μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€.

μΆ”κ°€ 톡찰λ ₯에 λ”°λ₯΄λ©΄ μ»¨ν…Œμ΄λ„ˆ λ‚΄μ—μ„œ μˆ˜λ™μœΌλ‘œ νŒŒμΌμ„ λ³€κ²½ν•˜λ©΄ nodemon이 μ˜ˆμƒλŒ€λ‘œ λ‹€μ‹œ μ‹œμž‘λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

μ΄κ²ƒμœΌλ‘œ λ‚˜λŠ” μ»¨ν…Œμ΄λ„ˆ μžμ²΄μ—μ„œ λ‚΄ μ‹œκ³„ μ‹œμŠ€ν…œμ„ μ‹€ν–‰ν•˜λ €κ³  μ‹œλ„ν–ˆκ³  μ§œμž”, 둜컬 λ³€κ²½ 사항에 따라 nodemon을 λ‹€μ‹œ μ‹œμž‘ν–ˆμŠ΅λ‹ˆλ‹€!

μ†”μ§νžˆ λ§ν•΄μ„œ 파일 λ³€κ²½μ˜ μ‹€ν–‰ μ»¨ν…μŠ€νŠΈλ₯Ό λ³€κ²½ν•˜λŠ” 것이 μ™œ μ€‘μš”ν•œμ§€ μ •ν™•νžˆ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 그것이 μ›λž˜ 문제λ₯Ό ν•΄κ²°ν•˜κ³  μ—¬μ „νžˆ λ™μž‘μ— λ³€ν™”κ°€ μ—†λŠ”μ§€ ν™•μΈν•˜κΈ° μœ„ν•΄ λ§ˆμ§€λ§‰ λͺ‡ 가지 λ²„μ „μ˜ nodemon의 컀밋을 되돌리렀고 μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ 직감은 fs watchλ₯Ό μ²˜λ¦¬ν•˜λŠ” nodemon의 쒅속성이 κΈ°μ‘΄ κΈ°λŠ₯을 μ†μƒμ‹œμΌ°λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ–΄λ–»κ²Œ λ“  mac os 파일 λ³€κ²½ -> μ»¨ν…Œμ΄λ„ˆ λ³Όλ₯¨ 심볼릭 링크 λ³€κ²½μ˜ μ‹€ν–‰ κ²½λ‘œμ—μ„œ nodemon이 μ„ νƒν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚΄κ°€ nodemon의 내뢀에 λŒ€ν•΄ μΆ©λΆ„νžˆ μ•Œμ§€ λͺ»ν•˜κ³  λ‹€μ‹œ μž‘μ—… ν™˜κ²½μ„ 가지고 μžˆλ‹€λŠ” 것을 κ³ λ €ν•˜λ©΄ μ—¬κΈ°μ„œ μ–΄λ–€ 쒅속성이 λΉ„λ‚œλ°›μ„ 수 μžˆλŠ”μ§€ μ•Œμ•„ λ‚΄λ €κ³  λ…Έλ ₯ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

핡심 질문(λ‚΄ 문제 ν…œν”Œλ¦Ώμ— μΆ”κ°€ν•  것): μ–΄λ–€ 도컀 이미지λ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

이건 #1484의 μ†μž„μˆ˜λΌκ³  μƒκ°ν•˜κ³  μ•ŒνŒŒμΈμ„ μ‚¬μš©ν•˜λŠ” 것 κ°™μ•„μ„œ μˆ˜μ • 사항을 ν‘Έμ‹œν•˜λ©΄ μˆ˜μ •λ  κ²ƒμž…λ‹ˆλ‹€β€¦

[email protected]의 라이브 μˆ˜μ •(

이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€ @leifdejong μž‘λ™ν•©λ‹ˆλ‹€! docker-compose.ymlμ—μ„œ 일뢀λ₯Ό λ³€κ²½ν•˜μ‹­μ‹œμ˜€.

nodemon index.js λͺ…λ Ή
λͺ…λ Ή nodemon -L index.js

이것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€ (λ‚΄ Dockerfile에 inotify-tools μΆ”κ°€): https://stackoverflow.com/a/46804953/2397773

λ˜ν•œ webpack-dev-server κ°€ λ‹€μ‹œ λ‘œλ“œλ˜μ§€ μ•ŠλŠ” 것과 λ™μΌν•œ 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€.

이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€ @leifdejong μž‘λ™ν•©λ‹ˆλ‹€! docker-compose.ymlμ—μ„œ 일뢀λ₯Ό λ³€κ²½ν•˜μ‹­μ‹œμ˜€.

nodemon index.js λͺ…λ Ή
λͺ…λ Ή nodemon -L index.js

이것은 λ‚˜λ₯Ό μœ„ν•΄ μΌν–ˆμŠ΅λ‹ˆλ‹€.

이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€ @leifdejong μž‘λ™ν•©λ‹ˆλ‹€! docker-compose.ymlμ—μ„œ 일뢀λ₯Ό λ³€κ²½ν•˜μ‹­μ‹œμ˜€.

nodemon index.js λͺ…λ Ή
λͺ…λ Ή nodemon -L index.js

μ €λ₯Ό μœ„ν•΄ μΌν•΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

이 문제λ₯Ό ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€ @leifdejong μž‘λ™ν•©λ‹ˆλ‹€! docker-compose.ymlμ—μ„œ 일뢀λ₯Ό λ³€κ²½ν•˜μ‹­μ‹œμ˜€.

nodemon index.js λͺ…λ Ή
λͺ…λ Ή nodemon -L index.js

κ³ λ§ˆμ›Œ.

λ‚˜λ₯Ό μœ„ν•΄ -L ν”Œλž˜κ·Έλ₯Ό μ‚¬μš©ν•΄λ„ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ…Έλ“œ 이미지λ₯Ό κΈ°λ³Έ μ΄λ―Έμ§€λ‘œ μ‚¬μš©ν•˜κ³  있으며 μ»¨ν…Œμ΄λ„ˆ 내뢀에 nodemon을 μ„€μΉ˜ν•  λ•Œ λ‹€μŒ κ²½κ³ κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.1.2 (node_modules/nodemon/node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

chokidar와 fseventsκ°€ 이 nodemon μž¬μ‹œμž‘κ³Ό 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. μˆ˜μ •ν•˜λŠ” 방법에 λŒ€ν•œ μ œμ•ˆμ΄ μžˆμŠ΅λ‹ˆκΉŒ?

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