๐ฅ ๋น ๋ฅธ ๋ชจ๋ ๊ต์ฒด(HMR)
๋น ๋ฅธ ๋ชจ๋ ๊ต์ฒด(Hot Module Replacement)(์ดํ HMR)๋ ๋ฐํ์์ ํ์ด์ง ์๋ก๊ณ ์นจ ์์ด ๋ชจ๋์ ์๋์ผ๋ก ๊ฐฑ์ ํ๋ฏ๋ก ๊ฐ๋ฐ ๊ฒฝํ์ ํฅ์์ํต๋๋ค. ์์ ๋ณํ์ ๋ฐ๋ผ ์ ํ๋ฆฌ์ผ์ด์ ์ํ๋ฅผ ๊ณ์ ์ ์งํ ์ ์์ต๋๋ค. Parcel HMR ์ JavaScript ์ CSS ์ ์ ๋ชจ๋๋ฅผ ์ง์ํฉ๋๋ค. ํ๋ก๋์ ๋ชจ๋์์ HMR ์ ์๋์ผ๋ก ๋นํ์ฑํ ๋ฉ๋๋ค.
ํ์ผ์ ์ ์ฅํ๋ฉด Parcel ์ ๋ณํ ๋ถ๋ถ์ ๋ค์ ๋น๋ํ๊ณ ์ด์ ์ํฅ์ ๋ฐ๋ ๋ชจ๋ ์คํ์ค์ธ ํด๋ผ์ด์ธํธ์ ์ ์ฝ๋๋ฅผ ๋ณด๋
๋๋ค. ๊ทธ ํ ์ ์ฝ๋๋ ์ด์ ๋ฒ์ ๊ณผ ๊ต์ฒด๋๊ณ ๋ชจ๋ ๋ถ๋ชจ๊ฐ ํจ๊ป ๋ค์ ํ๊ฐ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์ค module.hot
API ๋ฅผ ์ฌ์ฉํด ํ
(hook)์ ๊ฑธ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ชจ๋์ด ๋ฒ๋ ค์ง ๋, ๋๋ ์ ๋ฒ์ ์ด ๋ค์ด์ฌ ๋ ์ฝ๋์ ์๋ ค์ค ์ ์์ต๋๋ค. react-hot-loader๊ฐ์ ํ๋ก์ ํธ๋ ์ด ๊ณผ์ ์ ๋์์ด ๋๋ฉฐ, Parcel ์ ๋ฐ๋ก ์ธ ์ ์์ต๋๋ค.
module.hot.accept
์ module.hot.dispose
๋ ๋ฉ์๋๋ฅผ ์์ ๋์ธ์. module.hot.accept
๋ฅผ ์ด ๋ชจ๋์ด๋ ์ด ๋ชจ๋์ ๋ค๋ฅธ ์์กด ์ฌํญ์ด ๊ฐฑ์ ๋ ๋ ์คํ๋๋ ์ฝ๋ฐฑ๊ณผ ํจ๊ป ํธ์ถํฉ๋๋ค. module.hot.dispose
๋ ์ด ๋ชจ๋์ด ๊ต์ฒด๋ ๋ ํธ์ถ๋๋ ์ฝ๋ฐฑ์ ๋ฐ์๋ค์
๋๋ค.
if (module.hot) {
module.hot.dispose(function() {
// ๋ชจ๋์ด ๊ณง ํ๊ธฐ ๋จ
})
module.hot.accept(function() {
// ๋ชจ๋์ด๋ ๋ชจ๋์ ์์กด ์ฌํญ์ด ๊ณง ๊ฐฑ์ ๋จ
})
}
์์กด์ฑ ์๋์ค์น
Parcel ์ ์์กด์ฑ ํจํค์ง๊ฐ ํ์ํ ๋๋ง๋ค node_module
์์ ๋ง๋ ์์กด์ฑ์ ์ฐพ๊ณ , ๋ง์ฝ ์ฐพ์ง ๋ชปํ๋ฉด ์๋์ผ๋ก yarn
์ด๋ npm
์ ์ด์ฉํด ์์กด์ฑ ํจํค์ง๋ฅผ ์ค์นํฉ๋๋ค.(yarn.lock
ํ์ผ์ด ์๋์ง ์ฌ๋ถ๋ก ํจํค์ง ๋งค๋์ ๊ฒฐ์ ) ์ด ๊ธฐ๋ฅ์ ๊ฐ๋ฐ์๋ก ํ์ฌ๊ธ ์์กด์ฑ ํจํค์ง ์ค์น๋ฅผ ์ํด Parcel ์ ๋งค๋ฒ ์ข
๋ฃํ๊ฑฐ๋ ์ฌ๋ฌ๊ฐ์ ํฐ๋ฏธ๋์ ๋์ฐ์ง ์์๋ ๋๊ฒ ํด์ค๋๋ค.
์ด ๊ธฐ๋ฅ์ ์ค์ง ๊ฐ๋ฐ๋ชจ๋(serve
ํน์ watch
๋ช
๋ น์ด ์ฌ์ฉ์)์์๋ง ๋์ํฉ๋๋ค. ํ์ง๋ง ํ๋ก๋์
๋ชจ๋(build
๋ช
๋ น์ด)์์ ๋ฐฐํฌ๋์ค ๋ฐ์ํ๋ ์์น์๋ ๋ถ์์ฉ์ ๋ฐฉ์งํ๊ธฐ ์ํด ์๋์ค์น๊ฐ ๋นํ์ฑํ ๋ฉ๋๋ค.
์ด ๊ธฐ๋ฅ์ --no-autoinstall
์ต์
์ผ๋ก ๋นํ์ฑํ ํ ์ ์์ต๋๋ค.
Safe Write
์ผ๋ถ ํ
์คํธ ํธ์ง๊ธฐ์ IDE ๋ safe write
๋ผ๊ณ ๋ถ๋ฅด๋ ๊ธฐ๋ฅ์ผ๋ก ํ์ผ์ ๋ณต์ ํ ๋ค์ ์ ์ฅํ ๋ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ ์ค์ ๋ฐฉ์งํฉ๋๋ค.
๋น ๋ฅธ ๋ชจ๋ ๊ต์ฒด๋ฅผ ์ฌ์ฉํ ๋ ์ด ๊ธฐ๋ฅ์ ์๋ ํ์ผ ๋ณ๊ฒฝ ๊ฐ์ง๋ฅผ ๋ง์๋ฒ๋ฆฝ๋๋ค. safe write
๊ธฐ๋ฅ์ ๋นํ์ฑํ ํ๋ ค๋ฉด ์๋ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ธ์.
Sublime Text 3
์ฌ์ฉ์ ์ค์ (user preferences)์atomic_save: "false"
๋ฅผ ์ถ๊ฐํ์ธ์.IntelliJ
์ค์ (preferences)์์ "safe write"๋ก ๊ฒ์ํด์ ์ฐพ์ ๋ค ๋นํ์ฑํ ํ์ธ์.Vim
์ค์ ์:set backupcopy=yes
๋ฅผ ์ถ๊ฐํ์ธ์.WebStorm
Preferences > Appearance & Behavior > System Settings ๋ก ๊ฐ์"safe write"
์ ์ฒดํฌ๋ฅผ ํ์ด๋ฒ๋ฆฌ์ธ์.
๋ฌธ์์ ๊ฐ์ ์ ๋์์ฃผ์ธ์
๋น ์ง์ ์ด ์๊ฑฐ๋ ๋ช ํํ์ง ์์ ๊ฒฝ์ฐ, ์น ์ฌ์ดํธ ์ ์ฅ์์ ์ด์๋ฅผ ์ ๊ธฐํด ์ฃผ์๊ฑฐ๋ ํ์ด์ง๋ฅผ ์์ ํด ์ฃผ์ธ์..