Signature_pad: Create React App์—์„œ SignaturePad๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2017๋…„ 05์›” 26์ผ  ยท  11์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: szimek/signature_pad

Webpack 2์—์„œ signature_pad๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฒ„๊ทธ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค!

๋‚ด ํ”„๋กœ์ ํŠธ๋Š” Create React App ์˜ ์ตœ์‹  ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์˜ Create React App์—์„œ SignaturePad๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ˆ์ƒ๋Œ€๋กœ ์ž‘๋™ํ–ˆ์ง€๋งŒ Webpack 2๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•  ๋•Œ ๋ฒ„๊ทธ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Webpack 2์˜ ์ƒˆ๋กœ์šด ๊ฐ€์ ธ ์˜ค๊ธฐ / ๋‚ด๋ณด๋‚ด๊ธฐ ๋ฉ”์ปค๋‹ˆ์ฆ˜๊ณผ ํŠน๋ณ„ํžˆ ๊ด€๋ จ์ด ์žˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ํ–‰๋™์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

SignaturePad ์˜ ์ƒˆ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๊ณ ํ•˜๋ฉด ์•ฑ์ด ํŠน์ • ์›นํŒฉ ๊ด€๋ จ ์˜ค๋ฅ˜์™€ ํ•จ๊ป˜ ์ถฉ๋Œํ•ฉ๋‹ˆ๋‹ค.

screen shot 2017-05-26 at 11 28 41 am

screen shot 2017-05-26 at 11 35 50 am

์˜ˆ์ƒ๋˜๋Š” ๋™์ž‘์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ธ์Šคํ„ด์Šค๋Š” ์ถฉ๋Œ์—†์ด ์˜ˆ์ƒ๋Œ€๋กœ ์ƒ์„ฑ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ๋ฒ„์ „์˜ SignaturePad์™€ ์–ด๋–ค ๋ธŒ๋ผ์šฐ์ € / ์žฅ์น˜๊ฐ€์ด ๋ฌธ์ œ์˜ ์˜ํ–ฅ์„ ๋ฐ›์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ Chrome๊ณผ Safari ๋ชจ๋‘์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋” ๋‚˜์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ js ํŒŒ์ผ์„ ์ง์ ‘ ๊ฐ€์ ธ ์˜ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

import SignaturePad from 'signature_pad/dist/signature_pad.js';

๋ชจ๋“  11 ๋Œ“๊ธ€

@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 ๋ฐ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ตœ์‹  ๋ฒ ํƒ€ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ๋•Œ ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€์žˆ๋Š” ๊ฒฝ์šฐ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ์—ฌ์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰