์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ jimp
๋ฅผ ์ผ๋ถ ๋ณํ์ ์ํํ๊ธฐ ์ํ ์ข
์์ฑ์ผ๋ก ์ ์ธํ ๊ฒ์ ๋ด
๋๋ค.
๋์ด (๋ด ํ๋ก์ ํธ ์ข
์์ฑ์ ๋ถ์ํ๊ณ ์์ด node-vibrant
๋ด package.json
์ ๊ฐ์ ์ธ๋ชจ jimp
๊ณต๊ฐ์ ๋ง์ด์๊ฒ ํ์ํฉ๋๋ค :
ncdu 1.14 ~ Use the arrow keys to navigate, press ? for help
--- /deploy/out/node_modules ---------------
185.0 MiB [##########] /<strong i="11">@jimp</strong>
38.4 MiB [## ] /chrome-aws-lambda
34.2 MiB [# ] /sharp
11.0 MiB [ ] /<strong i="12">@browserless</strong>
11.0 MiB [ ] /<strong i="13">@babel</strong>
9.2 MiB [ ] /jimp
6.3 MiB [ ] /core-js
4.8 MiB [ ] /lodash
3.2 MiB [ ] /jsdom
3.1 MiB [ ] /moment
3.0 MiB [ ] /iltorb
2.4 MiB [ ] /colorable
2.1 MiB [ ] /cssstats
1.9 MiB [ ] /<strong i="14">@cliqz</strong>
1.7 MiB [ ] /<strong i="15">@microlink</strong>
1.7 MiB [ ] /graphql
1.7 MiB [ ] /port-numbers
1.7 MiB [ ] /node-vibrant
์์ ์ jimp
์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ผ๋ถ ํ๋ฌ๊ทธ์ธ์ด ํฌํจ๋์ด ์๋ค๋ ๊ฒ์
๋๋ค.
--- /deploy/out/node_modules/<strong i="20">@jimp</strong> ---------
/..
7.6 MiB [##########] /plugin-print
7.0 MiB [######### ] /core
6.9 MiB [######### ] /plugin-resize
6.9 MiB [######### ] /plugin-color
6.8 MiB [######## ] /plugin-crop
6.8 MiB [######## ] /plugin-blur
6.8 MiB [######## ] /plugin-rotate
6.8 MiB [######## ] /png
6.8 MiB [######## ] /custom
6.8 MiB [######## ] /plugin-blit
6.8 MiB [######## ] /plugin-contain
6.8 MiB [######## ] /plugin-normalize
6.8 MiB [######## ] /plugins
6.8 MiB [######## ] /plugin-cover
6.8 MiB [######## ] /plugin-gaussian
6.8 MiB [######## ] /plugin-scale
6.8 MiB [######## ] /bmp
6.8 MiB [######## ] /plugin-mask
6.8 MiB [######## ] /plugin-displace
6.8 MiB [######## ] /jpeg
๊ทธ๋ฌ๋ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ์ด node-vibrant
์ ๊ด๋ จ์ด ์๋์ง ํ์คํ์ง ์์ต๋๋ค.
๋ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ ์ ์ํ๊ณ ์ถ์ต๋๋ค.
sharp
์ฌ์ฉ ๊ณ ๋ ค(๋ด๊ฐ ๊ฐ์ฅ ์ข์ํ๋ ์๋ฃจ์ )
๋ด ๋ฒ๋ค์์ ๋ณผ ์ ์๋ฏ์ด sharp
๋ ์ข
์์ฑ์ผ๋ก ์์ต๋๋ค.
๋์ ์ฃผ์ ์ฐจ์ด์ ์ jimp
๊ฐ 100% ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ธ ๋ฐ๋ฉด sharp
๋ ์๋ค ๋ฐ์ด๋๋ฆฌ์ ์์ํ๋ค๋ ๊ฒ์
๋๋ค.
์ฒ์์ ๋๋ ์๊ฐ jimp
๊ฐ ์ข
์์ฑ์ ๊ฐ์ง๊ณ ์์ง ์์ง๋ง, ํ์ค์ ๋๋ฌด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์ ๋ ์์๋ค : sharp
์ ๋ฐ ๋ฏธ๋ฆฌ ์ค์น ๋ฐ์ด๋๋ฆฌ ๋ฐ ํจํค์ง ํฌ๊ธฐ๊ฐ ์ค์ ๋ก ์์ค ... ํจ์ฌ ์ jimp
๋ณด๋ค
์ค์ ๋ก sharp
perf๊ฐ ๋ ์ฐ์ํฉ๋๋ค.
http://sharp.pixelplumbing.com/en/stable/performance/
jimp
jimp
๊ฐ ์ถ๊ฐ๋๋ 185MB ์์ ์ค์ ๋ก ๋ช ๊ฐ์ง๋ง ์ฌ์ฉํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
node-vibrant
์์ ์ด๋ป๊ฒ ํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์๋ฅผ ๋ค์ด README.md ์ ์์ ์น์
์ ์ถ๊ฐํ๋ฉด ํ์ํ jimp
ํ๋ฌ๊ทธ์ธ์ด ๋ช
์์ ์ผ๋ก ๋์ด๋์ด ์์ผ๋ฉด ๋๋จธ์ง ํ์ํ์ง ์์ ๊ฒ๋ค์ ์ ์ธํ ์ ์์ ๊ฒ์
๋๋ค. ์ฌ์ ๊ตฌ์ถ ๋จ๊ณ
์ด ๋ฌธ์ ๋ฅผ ์กฐ์ฌํ๊ธฐ ์ํด ์ํํ ์์ ์ ์ฌ๋ํฉ๋๋ค. ์ง์ฌ์ผ๋ก ๊ฐ์ฌํฉ๋๋ค.
sharp
๋ (์ด๋ฆ์๋ ๋ถ๊ตฌํ๊ณ ) ๋ธ๋ผ์ฐ์ ๊ฐ ์์ฒด์ ์ผ๋ก node-vibrant
๋ฅผ ์คํํ ์ ์๋๋ก ์ง์ํ๋ฏ๋ก ์ฐ๋ฆฌ๊ฐ ์ทจํ ์ ์๋ ์๋ฃจ์
์ ์๋๋๋ค.
๊ทธ๋ฌ๋, ๋น์ ์ ์ ๋์ ์ผ๋ก ์ฌ๋ฐ๋ฅธ ๊ฒ jimp
์์ ์ฌ์ฉ์ ๋๋ถ๋ถ ํ์ํ์ง ์์ต๋๋ค node-vibrant
. ์ฐ๋ฆฌ๋ ํ์ฌ ํ์ฌ "์์ ๋" ์ฝ๋๋ฒ ์ด์ค์ ๋ํ ๊ฐ๋ฐ์ ์ ํํ๊ณ ์์ผ๋ฉฐ ์ฝ๋๋ฒ ์ด์ค๋ฅผ monorepo๋ก ์ฌ์์ฑํ๋ ์์
์ ํ๊ณ ์์ต๋๋ค(์ด๋ ๋ฏธ๋์๋ node-vibrant
์์ ์ฌ์ฉํ ๊ฒ์ ์ ํํ ์ ์์์ ์๋ฏธํฉ๋๋ค !) ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ๊ฑฐ๊ธฐ์์๋ ๋ง๋ค ์ ์๋ ํฌ๊ธฐ ์ต์ ํ์์ ํ์ธํ์ต๋๋ค.
์์ผ๋ก ๋งค์ฐ ๋ฐ์ ํ ์ฃผ๋ฅผ ๋ณด๋ด์ผ ํ์ง๋ง ๋ค์ ์ฃผ๋ง์ ์ด ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ํด ์ต์ ์ ๋คํ ๊ฒ์ ๋๋ค.
๊ทธ๋ ์ง ์์ผ๋ฉด, ์ฐ๋ฆฌ๋ ํญ์ ํ ๋ฆฌํ์คํธ๋ฅผ ์ฌ๋ํ๊ณ ์๋ฝํฉ๋๋ค ๐
@jimp
๋ค์ ์๋ ๋ ๋ค๋ฅธ ์ฌ์ค์ ํ์ธํ์ต๋๋ค. core-js
๋ฅผ ์ข
์์ฑ์ผ๋ก ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ด ์ข
์์ฑ์ ๋ชจ๋ ํ๋ฌ๊ทธ์ธ๋ง๋ค ์ค์น๋ฉ๋๋ค!
์ด๊ฒ์ด @jimp
ํฌ๊ธฐ๊ฐ 185MB์ธ ์ด์ ์
๋๋ค. core-js
๋ 7.4MiB x 27 ๋ชจ๋ = ๋๋ฌด ๋ง์ ๊ณต๊ฐ์ ์ฐจ์งํฉ๋๋ค.
์๋ง๋ core-js
๋ ํ๋ฌ๊ทธ์ธ ๊ฐ์ ๊ณต์ ํ ์ ์๋ ๋ฐฉ์์ผ๋ก ์ ์ธ๋ ์ ์์ต๋๋ค.
๋ค์์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด jimp๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ฐ๊ตฌ์ ๋๋ค.
@jimp/custom
ํจํค์ง๋ ํ๋ฌ๊ทธ์ธ์ ์ฒ์๋ถํฐ ์ถ๊ฐํ๊ธฐ ์ํ ๊ธฐ๋ฐ ์ญํ ์ ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ๋ types
(์ง์๋๋ ์ด๋ฏธ์ง ์ ํ) ๋ฐ plugins
(์ฌ์ฉํ ํ๋ฌ๊ทธ์ธ)์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ configure
ํจ์์
๋๋ค.
@jimp/types
๋ ๊ธฐ๋ณธ jimp
ํจํค์ง์ ํฌํจ๋ ๋ชจ๋ ์ ํ์ ๋ด๋ณด๋ด๋ฏ๋ก ์ด์ node-vibrant๊ฐ ์ง์ํ๋ ๋์ผํ ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฒ ์ง์ํ ์ ์์ต๋๋ค.
node-vibrant๊ฐ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์ ์ผํ ํน์ ํ๋ฌ๊ทธ์ธ ์ resize
๊ธฐ๋ฅ ์
๋๋ค. ํด๋น ํ๋ฌ๊ทธ์ธ์ @jimp/plugin-resize
์
๋๋ค.
@vibrant/image-node
ํจํค์ง๋ ์คํฌ๋ฆฝํธ ์๋จ ๊ทผ์ฒ์์ ๋ค์๊ณผ ๊ฐ์ด ์
๋ฐ์ดํธํ ์ ์์ต๋๋ค.
import configure from '@jimp/custom';
import types from '@jimp/types'; // all of jimp's default types
import resize from '@jimp/plugin-resize'; // resize function
const Jimp = configure({
types: [types],
plugins: [resize]
});
๋ช ๊ฐ์ง ํ์ดํ์ ์์ฑํด์ผ ํ ๊ฒ ๊ฐ์ง๋ง @NotWoods์๊ฒ ์์ฒญ๋ ๊ฐ์ฌ๋ฅผ ๋๋ฆฝ๋๋ค. ์ด๋ฒ์ฃผ์ ๋๋ด๋ ค๊ณ ํฉ๋๋ค
์๋ ์๊ฐํ๋ ๊ฒ๋ณด๋ค ํ์ดํ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๋ด๊ฐ ๋จผ ๊ธธ์ ๊ฐ๊ณ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์ํ๊ณ์ ์ฐ๋ฆฌ ์์ ์ ์๊ตฌ ์ฌํญ์ ์์ ํ๊ณ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค.
jimp์ ๋ํ ํ์ดํ์ ๊ฒฐ๊ตญ ์ฝ๊ฐ์ ์๊ฐ์ด ๊ฑธ๋ ธ์ง๋ง ์ ์คํธ๋ฆผ์ ์ข์ ๊ธฐ์ฌ๋ฅผ ํ์ต๋๋ค.
https://github.com/oliver-moran/jimp/pull/770
๋ณํฉ ํ node-vibrant
์ต์ ํํ๊ฒ ์ต๋๋ค.
Jimp 0.8.4๊ฐ ์ถ์๋๋ฉด์ ์ด์ ์ด๊ฒ์ด ๊ฐ๋ฅํฉ๋๋ค! ์ค๋ ๋ฐค PR์ ๊ณต๊ฐํ๊ฒ ์ต๋๋ค! :NS
๊ฐ์ ธ์ค๊ธฐ jimp 0.8.4
์ดํ์ ์ผ๋ถ ๋ฌธ์ ๋ฅผ ์์ ํ๊ธฐ ์ํด https://github.com/oliver-moran/jimp/pull/815 ์์ ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ด๊ฒ์ 3.1.5
๋ฆด๋ฆฌ์ค๋ถํฐ ํด๊ฒฐ๋์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ค์์ ํฌ๊ธฐ๋ฅผ ์ค์ด๊ธฐ ์ํด jimp๋ฅผ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋ช ๊ฐ์ง ์ถ๊ฐ ์ฐ๊ตฌ์ ๋๋ค.
@jimp/custom
ํจํค์ง๋ ํ๋ฌ๊ทธ์ธ์ ์ฒ์๋ถํฐ ์ถ๊ฐํ๊ธฐ ์ํ ๊ธฐ๋ฐ ์ญํ ์ ํฉ๋๋ค. ๊ธฐ๋ณธ ๋ด๋ณด๋ด๊ธฐ๋types
(์ง์๋๋ ์ด๋ฏธ์ง ์ ํ) ๋ฐplugins
(์ฌ์ฉํ ํ๋ฌ๊ทธ์ธ)์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋configure
ํจ์์ ๋๋ค.@jimp/types
๋ ๊ธฐ๋ณธjimp
ํจํค์ง์ ํฌํจ๋ ๋ชจ๋ ์ ํ์ ๋ด๋ณด๋ด๋ฏ๋ก ์ด์ node-vibrant๊ฐ ์ง์ํ๋ ๋์ผํ ์ด๋ฏธ์ง๋ฅผ ์ฝ๊ฒ ์ง์ํ ์ ์์ต๋๋ค.node-vibrant๊ฐ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ์ ์ผํ ํน์ ํ๋ฌ๊ทธ์ธ ์
resize
๊ธฐ๋ฅ ์ ๋๋ค. ํด๋น ํ๋ฌ๊ทธ์ธ์@jimp/plugin-resize
์ ๋๋ค.@vibrant/image-node
ํจํค์ง๋ ์คํฌ๋ฆฝํธ ์๋จ ๊ทผ์ฒ์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ฐ์ดํธํ ์ ์์ต๋๋ค.