Webpack 2์์ signature_pad๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ฒ๊ทธ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค!
๋ด ํ๋ก์ ํธ๋ Create React App ์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด์ ๋ฒ์ ์ Create React App์์ SignaturePad๋ฅผ ์ฌ์ฉํ๋ฉด ์์๋๋ก ์๋ํ์ง๋ง Webpack 2๋ก ์ ๊ทธ๋ ์ด๋ ํ ๋ ๋ฒ๊ทธ๊ฐ ๋ํ๋ฌ์ต๋๋ค. ๋ฐ๋ผ์ Webpack 2์ ์๋ก์ด ๊ฐ์ ธ ์ค๊ธฐ / ๋ด๋ณด๋ด๊ธฐ ๋ฉ์ปค๋์ฆ๊ณผ ํน๋ณํ ๊ด๋ จ์ด ์๋ค๊ณ ํ์ ํฉ๋๋ค.
ํ์ฌ ํ๋์ ๋ฌด์์ ๋๊น?
SignaturePad
์ ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๋ ค๊ณ ํ๋ฉด ์ฑ์ด ํน์ ์นํฉ ๊ด๋ จ ์ค๋ฅ์ ํจ๊ป ์ถฉ๋ํฉ๋๋ค.
์์๋๋ ๋์์ ๋ฌด์์ ๋๊น?
์ธ์คํด์ค๋ ์ถฉ๋์์ด ์์๋๋ก ์์ฑ๋์ด์ผํฉ๋๋ค.
์ด๋ค ๋ฒ์ ์ SignaturePad์ ์ด๋ค ๋ธ๋ผ์ฐ์ / ์ฅ์น๊ฐ์ด ๋ฌธ์ ์ ์ํฅ์ ๋ฐ์ต๋๊น?
์ด๊ฒ์ Chrome๊ณผ Safari ๋ชจ๋์์ ๋ฐ์ํ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.
@taylorlapeyre ์ ๊ณ
์ด : __WEBPACK_IMPORTED_MODULE_1_signature_pad___default.a
์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค : "/static/media/signature_pad.2ceae229.mjs"
.
๋๋ ๋ฌด์์ด ์๋ชป๋์๋์ง ์์ ๋ด๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ ๋๊ตฐ๊ฐ๊ฐ ์ด๋ค ์์ด๋์ด๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์์ ์ผ๋ก PR์ ๋ง๋ค ์ ์๋ค๋ฉด ๊ทธ๊ฒ์ ๊ต์ฅ ํ ๊ฒ์ด๋ค.
@taylorlapeyre ๋๋ ๋ฌด์์ด ์๋ชป๋์๋์ง ์์ ๋๊ณ ์ค์ ๋ก react-create-app
์ ๋ฒ๊ทธ๋ผ๊ณ ์๊ฐํ์ง๋ง ์ฌ๊ธฐ์์๋ ์ฝ๊ฒ ์์ ํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ Webpack 2๊ฐ signature_pad.mjs
ํ์ผ์์๋ ES6 ๋ฒ์ ์๋ก๋ํ์ง๋ง react-create-app
Webpack ๊ตฌ์ฑ์ด .mjs
ํ์ฅ์๋ฅผ ๊ฐ์ง ํ์ผ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅธ๋ค๋ ๊ฒ์
๋๋ค. -์ด๊ฒ์ด ํ์ผ ์ด๋ฆ์ ๋ฐํํ๋ ์ด์ ์
๋๋ค.
@szimek ์, ๋ง์ด ๋๋ค์. ์ด ๊ฒฝ์ฐ ์์ ์ ์๋ง๋ Create React App์ ์์ด์ผํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ธฐ์ ํ๋ณดํ๊ณ ์ถ๋? ์ถ๋ฐ์ ์ ์๋ ค ์ฃผ์๋ฉด ๋ฐ์๋ ๋ผ์ ๐
๊ธฐ๋ก์ ์ํด-ํด๊ฒฐ ๋ฐฉ๋ฒ์ signature_pad.js
ํ์ผ์ src
๋๋ ํ ๋ฆฌ์ ์ง์ ๋ณต์ฌํ๋ ๊ฒ์
๋๋ค. ์ผ๋จ ๊ทธ๋ ๊ฒํ๋ฉด ์์๋๋ก ๊ฐ์ ธ์ฌ ์์์์ต๋๋ค.
@szimek์ ๋ํ ๋น ๋ฅธ ๋ต๋ณ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. @taylorlapeyre์ I์ ์์
์ ... ๊ทธ๋ฅ์ REPO๋ฅผ ํฌํฌ์ ๋ฐ์ผ๋ก ์ฐ๋ ๋น๋ ํ๋ก์ธ์ค๋ฅผ ๋ณ๊ฒฝ .js
๋์ ์ ํ์ผ .mjs
ํ์ผ์. ์ฐ๋ฆฌ์ create-react-app ์ปจํ
์คํธ์์ ์์ ํ ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค! ๊ทธ๋ฌ๋ ์, mjs๊ฐ ๋ฌธ์ ์ด๊ธฐ ๋๋ฌธ์ ๋ ๋ง์ ๋ฌธ์ ์ฒ๋ผ ๋ค๋ฆฝ๋๋ค.
๋ค์ ํ ๋ฒ, ์ด๋ฏธ ์ด๊ฒ์ CRA์ ๊ฐ์ ธ๊ฐ @szimek์ ๋ํ ๊ฑฐ๋ํ ์ํ ... mjs
์ง์์๋ณ๋ก ๊ด์ฌ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค ...
umd
๋น๋๋ฅผ ๋ค๋ฅธ ์ด๋ฆ (์ : signature_pad.umd.js
๋ด๋ณด๋ด๊ณ ๋ชจ๋ ๋น๋์ signature_pad.js
๋ฅผ ์ฌ์ฉํ๋ ํจ์น๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํ์ฌ ๋ฐฐํฌ์ ์ผ๋ง๋ ๋ง์ ์ํฅ์ ๋ฏธ์น ์ง ํ์คํ์ง ์์ต๋๋ค. ๋ํ ํ์ฌ์ด ์ฌ์ฉ ์ฌ๋ก๊ฐ ์ผ๋ง๋ ์ผ๋ฐ์ ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ... ์ด๋ ์ชฝ์ด๋ Google์์ ์ด๋ป๊ฒ ๋์ ๋๋ฆด ์ ์๋์ง ์๋ ค์ฃผ์ธ์!
์, ๊ทธ๋ฌ๋์ด ํ์ผ์ ์ด๋ฆ์ signature_pad.es6.js
๋ก ๋ณ๊ฒฝํ์ฌ ๋ชจ๋ ๊ณณ์์ ์ง์๋๋์ง ํ์ธํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ dist ํ์ผ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ค๋ฉด ์ฃผ์ ๋ฆด๋ฆฌ์ค๊ฐ ํ์ํ๋ฏ๋ก ์ ์ ๊ธฐ๋ค๋ ค์ผ ํ ์ ์์ต๋๋ค. ์ฃผ์ ๋ฆด๋ฆฌ์ค (# 240)๊ฐ ํ์ํ ๊ธฐ๋ณธ ๋ฐ ๋ช
๋ช
๋ ๋ด๋ณด๋ด๊ธฐ์ ๊ด๋ จ๋ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ฅผ ํ์ธํด์ผํฉ๋๋ค. ๋ ๋ค ๋์์ ํ ์๋ ์์ต๋๋ค.
๋ ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ js ํ์ผ์ ์ง์ ๊ฐ์ ธ ์ค๋ ๊ฒ์ ๋๋ค.
import SignaturePad from 'signature_pad/dist/signature_pad.js';
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. signature_pad/dist/signature_pad.js
์์ ๊ฐ์ ธ ์ค๊ธฐ๋ atm์์ ์๋ํฉ๋๋ค.
์ด๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํ Facebook์ ๊ณต์ ๊ถ์ฅ ์ฌํญ์ด ์์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๊ทธ๋ค์ ES6๊ฐ ์์ผ๋ก ๋ช ๋
๋์ ์์ ํ ์ง์๋๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ ๋ ์ ์์ผ๋ฏ๋ก ๋์๊ด์ ES5 ์ฝ๋๋ฅผ ๊ฒ์ํด์ผํ๋ค๊ณ ์ ์ํฉ๋๋ค. Readme์์ ๋ค์ ์น์
์ ์ฐธ์กฐํ์ญ์์ค.
https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#npm -run-build-fails-to-minify
์๋ ค์ค ์ค ์์๋๋ฐ.
์์ง ์๋ํ์ง ์์์ง๋ง create-react-app
v2๋ node_modules
์์๋ ์ฝ๋๋ฅผ ์ปดํ์ผํด์ผํฉ๋๋ค-https: //github.com/facebook/create-react-app/pull/3776. signature_pad
์ v3 (ํ์ฌ ๋ฒ ํ ๋ฒ์ )์ ๋ ์ด์ mjs
ํ์ฅ์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก ํ์ธํ๋ ๊ฒ์ด ์ข์ง๋ง create-react-app
v2์์ ์๋ํด์ผํฉ๋๋ค.
CRA 2 ๋ฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ต์ ๋ฒ ํ ๋ฒ์ ์ ์ฌ์ฉํ ๋ ์ฌ์ ํ ๋ฌธ์ ๊ฐ์๋ ๊ฒฝ์ฐ์ด ๋ฌธ์ ๋ฅผ ๋ค์์ฌ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ ๋์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ js ํ์ผ์ ์ง์ ๊ฐ์ ธ ์ค๋ ๊ฒ์ ๋๋ค.
import SignaturePad from 'signature_pad/dist/signature_pad.js';