๋ด ./node_modules
ํด๋์ ํ์ผ ํฌ๊ธฐ๋ฅผ ํ์ธํ๋๋ฐ moment.js๊ฐ ๊ฐ์ฅ ๋ฌด๊ฑฐ์ด ๋น C ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ ๊ฒ ๊ฐ์ต๋๋ค. 2.1MB ๋ ๊ฝค ๋ง์ต๋๋ค. ํด๋ ํฌ๊ธฐ๋ฅผ ๊ฐ๋จํ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๋๋ถ๋ถ์ ๋ฌด๊ฒ๋ npm
์ ํจ๊ป moment.js์ ์์ถ ๋ฒ์ ์ ๊ฒ์ํ๊ณ ๋ชจ๋ ๋ก์ผ์ผ์ ์ด์ค ๊ฒ์ํ๋ ๋ฐ์ ๋น๋กฏ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ๋ก์ผ์ผ ์์ฒด๋ง์ผ๋ก๋ ์๋นํ ๋ฌด๊ฒ์ต๋๋ค.
๊ทธ๋์ ๋๋ moment.js์ ์ปค๋ฎค๋ํฐ์ ์ด ์์ ์ค์ด๋ ๊ฒ์ด ์ข์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ต๋๋ค!
./src
ํด๋๊ฐ npm
์ ๊ฒ์๋๋ ๊ฒ์ ์๋ตํ ์ ์์ต๋๊น?./min
ํด๋๊ฐ npm
์ ๊ฒ์๋๋ ๊ฒ์ ์๋ตํ ์ ์์ต๋๊น?./locales
ํด๋๋ฅผ ๋ณ๋์ npm
ํจํค์ง๋ก ์ด๋ํ์ฌ ๋ชจ๋ฉํธ๋ฅผ ์ต์ํํ ์ ์๋์?์ฌ๋๋ค์ ๋ชจ๋ฉํธ๋ฅผ ๋ค์ํ ๋ฐฉ์์ผ๋ก ์ฌ์ฉํ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ๋ ธ๋ ์ฑ์ ๋์คํฌ ๊ณต๊ฐ์ ๋ธ๋ผ์ฐ์ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ํ๋ฆฌ๋ฏธ์์ด ์๋๋ผ๋ ๋ฐ ๋์ํฉ๋๋ค.
์ฆ, min
ํด๋์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ ํํ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
์ npm์์ moment-with-locales.min.js
๊ฐ ํ์ํ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. moment.min.js
์ locales.min.js
์ด๋ฉด ์ถฉ๋ถํ๊ฒ ์ฃ ?
๋ํ min
ํด๋( locale.js
๋ฐ moment-with-locales.js
)์ ์ต์ํ๋์ง ์์ ํ์ผ์ด ํ์ํ์ง ์์์ผ ํฉ๋๋ค.
min ํด๋์ ์ด๋ฆ์ด ์ ๋ง ์๋ชป๋์์ต๋๋ค. ๋น๋๊ฐ ๋ ๋์ ์ด๋ฆ์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋ฆด๋ฆฌ์ค๋ฅผ ์ํด ์ ๋ฐ์ดํธ ์ธ๋ฑ์ค ๊ทธ๋ฐํธ ์์ ์ ์คํํ ๋๊น์ง moment-with-locales ๋ฐ locales ํ์ผ์ด ์๋ ๊ณณ์ ๋๋ค.
์ฐ๋ฆฌ๋ ํ์คํ npm์์ moment-with-locales ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์์ง๋ง ๊ทธ๊ฒ์ด ์ ๊ณตํ๋ ๊ฐ์น๋ ํ์คํ์ง ์์ต๋๋ค.
@martinheidegger ์ด๋ค ์กฐ๊ฑด์์ ์ ์ฒด ํจํค์ง์ ํฌ๊ธฐ๊ฐ ๋ฌธ์ ์ธ์ง ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ฌ๋๋ค์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ๋ ๋ง์ ์ต์ ์ ์ํจ์ ๋ฐ๋ผ ํจํค์ง๊ฐ ์ปค์ง๋๋ค. ๊ทํ๊ฐ ๋์ดํ ํญ๋ชฉ์ ์ ๊ฑฐํ๋ ค๋ฉด ์ด๋ค ๋ฉด์์ ์ต์ํ์ ๋ณ๋ ํจํค์ง๋ฅผ ๊ฒ์ํ ๋ค์ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ํฐ ํจํค์ง๋ ๊ฒ์ํด์ผ ํฉ๋๋ค.
npm ๋น๋์ ์ผ๋ถ/์ ์ฒด์์ ๋ชจ๋ ๊ฒ์ ์ต์ํ์ผ๋ก ์ค์ด๋ ๋ค๋ฅธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์๋ฅผ ๋ค์ด์ฃผ์ค ์ ์์ต๋๊น?
์ถ์ ๋ ๋ฐ๋ฉด NPM lodash์ ์ค์นํ๋ฉด ๋จ์ง _71 KB_์ 1.4 MB์
๋๋ค
lodash๊ฐ ๋ชจ๋ ๊ธฐ๋ฅ์ ์์ฒด ํจํค์ง๋ก ๊ฒ์ํ๋ค๋ ์ฌ์ค์ ๋ค๋ฅธ ํจํค์ง์์ ์ฐธ์กฐ๋๊ธฐ ๋๋ฌธ์ ๋ค์ ์ค์น๋๋ ๊ธด ํจํค์ง ๋ชฉ๋ก์ผ๋ก ์ด์ด์ง๋๋ค.
ํฌ๊ธฐ๊ฐ ์ฝ 300MB์ธ ์ผ๋ฐ์ ์ธ node_modules ํด๋๋ฅผ ๋ณด๋ฉด moment.js๋ฅผ ์กฐ๊ธ ๋ ์๊ฒ ๋ง๋ค ๊ฐ์น๊ฐ ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํจ์ฌ ๋ ํฌ๊ณ ํจ์ฌ ๋ ํฐ ์ด๋ฒคํธ๊ฐ ์์ต๋๋ค. ๋ค์์ ๊ทธ ์ค ์ผ๋ถ์ผ ๋ฟ์ ๋๋ค.
npm ํจํค์ง์ ํฌ๊ธฐ๋ ๋ณ๋ก ์ ๊ฒฝ์ฐ์ง ์์ง๋ง ์ ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์กฐ์๋ ๋ ์ง์ ๋ํด 58KB๋ฅผ ํฌํจํด์ผ ํ๋ค๋ ์ฌ์ค์ด ๋๋์ต๋๋ค(๋ ๋ฌด๊ฑฐ์ด ๋ก์บ์ด ํ์ํ์ง ์๋ค๊ณ ๊ฐ์ ) ๐
๋๋ ์ด๋ฐ ์ข ๋ฅ์ ๋ ผ์์ ์ง์ณค๋ค. ์ค์น ๊ณต๊ฐ์ด ์ ์ผ๋ฉด ํจํค์ง๋ฅผ ๋ ๋นจ๋ฆฌ ์ค์นํ ์ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ์ต๋๋ค(๊ฐ์ฅ ํฐ ์๊ฐ). ํ์ฐจ์ ๋ง์๋ ๊ฒ ๊ฐ์์. ๊ทธ๋์: kthxbye.
@martinheidegger ๋ ์์ฌ๋ฅผ ์ฌ์ฉํด๋ณด์ญ์์ค. ์ ์ด๋ npm๋ณด๋ค ์ ์ ์ ์ด๊ณ ํจํค์ง๋ฅผ ์บ์ํ๋ฏ๋ก ๋ค์ด๋ก๋์ ๋ง์ ์๊ฐ์ ํ ์ ํด์๋ ์๋ฉ๋๋ค. :)
๋๋ ๊ฐ์ ๋ฌธ์ ์ ์ง๋ฉด ํด์๋ค. import moment from 'moment';
ํ๋ฉด ๋ฒ๋ค ํฌ๊ธฐ๊ฐ 30kb์์ 250kb๋ก ์ฆ๊ฐํฉ๋๋ค!!! ์ฌ์ด ํด๊ฒฐ์ฑ
์ด ์์ต๋๊น?
@ paramsingh88 ์ ์ผํ ์ต์
์ ์ฌ์ฉํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ฐ์ ๋ฌธ์ ๋๋ฌธ์ ์ด ์ค๋ ๋๋ฅผ ์ฐพ์์ต๋๋ค. moment.unix(created).format('MMMM D, YYYY')
ํ๋ฉด ํ๋ก์ ํธ ํฌ๊ธฐ๊ฐ 58kB ์ฆ๊ฐํฉ๋๋ค. ์์ ๋ฏธ์ณค์ด!
๋๋ ์ด๋ฐ ํ๋๊ฐ ์ดํด๊ฐ ๋์ง ์๋๋ค.
๋ ธ๋ ์ฑ์ ๋์คํฌ ๊ณต๊ฐ์ ๋ธ๋ผ์ฐ์ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๋ฆฌ๋ฏธ์์ด ์๋๋๋ค.
๋ฌธ์ ๋ ์๊ฐ์ด ๋ ธ๋ ์ฑ์ด ์๋๋ผ๋ ๊ฒ์ ๋๋ค. ๋ฐฑ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ํ๋ก ํธ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ฌ์ฉํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ Moment.js๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ก ํธ์๋์์ ๋ ์ง๋ฅผ ๊ฒ์ฆํ ํ ๋ฐฑ์๋(์์ฒด์ ์ผ๋ก ๋ณ๋์ ๊ฒ์ฆ์ด ์์)๋ก ๋ ์ง๋ฅผ ์ ์กํด์ผ ํฉ๋๋ค.
๋ก์บ์ด ์๋ ์๊ฐ์ ํฌ๊ธฐ๋ 50k(์ถ์)์ด๊ณ ๋ก์บ์ด ์๋ ํฌ๊ธฐ๋ ์ฝ 300k(์ถ์)์ ๋๋ค. ๊ทธ๊ฒ์ ๋ํด ๋ญ๊ฐ๋ฅผ ํ๊ณ ์ถ๋ค๋ฉด https://github.com/moment/moment/issues/2373 ์์ ํ ๋ก ์ ํ์ธ
ํจํค์ง ๊ด๋ฆฌ์๋ ์ถ์ ๋ณต์กํ๊ฒ ๋ง๋๋ ๋ชจ๋ ๊ฒ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ ธ์ค์ญ์์ค.
๋ฏธ์ ๋ด ์ค์. (ํธ์ง๋จ)
์ผ๋ฐ์ ์ธ ํฉ์๋ ๋ ธ๋ ์ฑ์ ๋์คํฌ ๊ณต๊ฐ์ด ๋ธ๋ผ์ฐ์ ์ ์๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๋ฆฌ๋ฏธ์์ด ์๋๋ผ๋ ๊ฒ์ ๋๋ค.
์ด๋ฐ ๋ง์๊ฐ์ง์ผ๋ก ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๋๋ค์ด ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์ค์ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ๊นจ๋ซ๊ณ ์ด์ ๋ํด ์๋ฌด ์กฐ์น๋ ์ทจํ์ง ์๊ธฐ๋ก ์ ํํ๋ ์๊ฐ moment
๋ ์ฃฝ์ต๋๋ค.
๊ฐ๋ฒผ์ด ๋์์ ์ฐพ๋ ์ฌ๋์ด๋ผ๋ฉด date-fns
๊ฐ ํ์ํ ์ ํ์ด ๋ ๊ฒ์
๋๋ค.
์๋ ํ์ธ์, npm ์๊ฐ์ ์ฝ 3mb์ด์ง๋ง ์ด๋ ๋๋ค ํธ์ง ์ธ๋ผ์ธ ๋๊ตฌ์ ํฌ๊ธฐ์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ถ์๋ ํ์คํ ๋์์ด ๋ ๊ฒ์ ๋๋ค
gzipped Angular ์ฑ์์ ์ด๊ฒ์ ์ฌ์ฉํ๋ฉด ๋ด ์์ ๋ฒ๋ค ํฌ๊ธฐ์ 70%๊ฐ ๋ฉ๋๋ค. ์ ์ฒด ํจํค์ง๋ฅผ import * as moment from 'moment'
ํด์ผ ํ๋ฏ๋ก ํ์ํ์ง ์์ ๊ธฐ๋ฅ์ ์ ์ธํ ์ ์๋ค๋ฉด ์ ๋ง ์ข์ ๊ฒ์
๋๋ค.
moment.js๋ ๊ธฐ๋ณธ์ ์ผ๋ก Angular ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฃผ์ ๋ถ๋ถ ํฌ๊ธฐ๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ฆฝ๋๋ค.
์ด๊ฒ์ ๋ชจ๋ฐ์ผ ์ฅ์น์์ ์ ๋ง ์ํ๋ค.
@silentsnooc ๋ฐํ์์ ํ์ํ ๋ก์ผ์ผ๋ง ๋ก๋ํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ฃผ์ ๊ด์ฌ์ฌ๋ ๋ก์ผ์ผ ํ์ผ์ ์ฌ์ฉํ ๋๋ง ์ง์ฐ ๋ก๋ํ๋ ๊ฒ์ ๋๋ค.
@kylekatarnls ๋ฒ๋ค๋ฌ๋ฅผ ์ฌ์ฉํ๋ ์ฐ๋ฆฌ์๊ฒ ์์๋ฅผ ๋ณด์ฌ์ฃผ์๋ฉด ๋์์ด ๋ ๊ฒ์ ๋๋ค. ๊ฐ์ฌ ํด์.
๋ฌธ์์ ์ ๊ณต๋ JSPM์ ์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
https://momentjs.com/docs/#/i18n/loading -into-browser/
webpack์์๋ ์๋ํ๋ฉฐ ๋ค๋ฅธ ๋ฒ๋ค๋ฌ์์๋ ์๋ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๋ํ์ง ์์์ง๋ง ์ด ๋๊ธ์๋ ์ข์์๊ฐ ๋ง์ต๋๋ค.
https://github.com/moment/moment/issues/2517#issuecomment -185836313
๋๋ moment.js๊ฐ ๋ธ๋ผ์ฐ์ ํ๋ก ํธ ์๋์์ ์ฌ์ฉ๋๋๋ก ์๋๋์ง ์์์ผ๋ฉฐ ์ ์ง ๊ด๋ฆฌ์๋ก๋ถํฐ ๊ทธ๋ ๊ฒ ํ ๊ณํ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋น์ทํ ๋ฌธ์ ์ ๋ถ๋ช์ณค์ ๋ ์ฐ๋ฆฌ๋ ํ๋ก ํธ ์๋์์ date-fns
๋ฅผ ์ฌ์ฉํ๊ณ ๋ฐฑ์๋์์ moment.js๋ฅผ ์ ์งํ์ต๋๋ค. ์ ํ๋ก์ ํธ์ ๊ฒฝ์ฐ ์์ชฝ ๋์์ date-fns
์ฌ์ฉํ ์ ์๋์ง ํ์ธํฉ๋๋ค.
@demisx ๋ ๋ณผ ํ์๊ฐ ์์ต๋๋ค.
ํํธ๋ฅผ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :+1: ๋จผ์ ์ธ๊ธํ @xinghul ์๊ฒ๋ thx.
moment.js
์ ๋์์ธ ๋ ์์ ํฌ๊ธฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐพ์ต๋๋ค.momentjs๋ฅผ dayjs๋ก ๊ต์ฒดํ์ต๋๋ค. ๋ด ๋ชฉ์ ์ ์ ๋ง๋ ๊ฒ ๊ฐ์ผ๋ฉฐ ๋ก์ผ์ผ๊ณผ fromNow ํ๋ฌ๊ทธ์ธ ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฝ 15Kb์ ๋ถ๊ณผํฉ๋๋ค. ํ์์ ์ด๋ค.
Ionic 4/Angular 8 ์ฑ ๋ฒ๋ค ํฌ๊ธฐ ์ฐจ์ด:
momentJS
: ์ถ๊ฐ = 204 KB
dayJS
: ์ถ๊ฐ = 6 KB
๊ธฐ๋ณธ ๋ฐ์ดํฐ/์๊ฐ ํ์ ๋ฐ ์กฐ์๋ง ํ์ํฉ๋๋ค. ๊ทธ๋์ ๋๋ dayJS
๋ก ๊ฐ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค : https://github.com/iamkun/dayjs
๋๋ ๋ํ 249kb๋ฅผ ์ป๊ณ ์์ต๋๋ค. ๊ณต๋ ์์ ์๊ฐ ์ด์ ๋ํด ๋ฌด์์ ํ ๊ฒ์ธ์ง ํ์คํ์ง ์์ต๋๋ค.. date.fns๋ก ์ด๋
์๋ํ์ง ์์์ง๋ง ์ด ๋๊ธ์๋ ์ข์์๊ฐ ๋ง์ต๋๋ค.
#2517(๋๊ธ)
์ด๊ฒ์ ๋น ๋ฅธ ์ต์ ํ๋ฅผ ์ฐพ๋ ๋ชจ๋ ์ฌ๋์๊ฒ ํจ๊ณผ์ ์ด์์ต๋๋ค.
๋ด ์๊ฐ์ด 654.7kB์์ 178.4kB๋ก ๊ฐ ์ ์๋๋ก ํ์ฉํ์ต๋๋ค. ์ฌ์ ํ ํด ์ ์์ง๋ง ๊ฐ์ ๋์์ต๋๋ค.
ํจ์๋ฅผ date-fns๋ก ๊ฐ์ ธ์ฌ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๋ฐ ๋ง์๊ฐ์ง์ผ๋ก ์ข์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ๋ง๋ค ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฌ๋๋ค์ด ๋ฒ๋ค ํฌ๊ธฐ๊ฐ ์ค์ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ๊นจ๋ซ๊ณ ์ด์ ๋ํด ์๋ฌด ์กฐ์น๋ ์ทจํ์ง ์๊ธฐ๋ก ์ ํํ๋ ์๊ฐ
moment
๋ ์ฃฝ์ต๋๋ค.๊ฐ๋ฒผ์ด ๋์์ ์ฐพ๋ ์ฌ๋์ด๋ผ๋ฉด
date-fns
๊ฐ ํ์ํ ์ ํ์ด ๋ ๊ฒ์ ๋๋ค.