Chosen: npm์—์„œ ์„ ํƒํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๊นŒ?

์— ๋งŒ๋“  2013๋…„ 07์›” 31์ผ  ยท  25์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: harvesthq/chosen

package.json ํŒŒ์ผ์ด ์žˆ์ง€๋งŒ npm์€ ํ•ด๋‹นํ•˜๋Š” '์„ ํƒ๋œ' ํŒจํ‚ค์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

Bower๊ฐ€ ์„ ํƒํ•œ ํฌํฌ์— ํŒจํ‚ค์ง€ ์ •์˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฒŒ์œผ๋ฆ„์ธ๊ฐ€, ๋ฌด๋Šฅ์ธ๊ฐ€? ์ž„๋Œ€ ์‹œ ๋…ธ๋“œ ์‚ฌ์šฉ์ž๋ฅผ ์™„์ „ํžˆ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋Œ€์‹  ์–ด๋Š ์ •๋„ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์‚ฌ๋ ค ๊นŠ์€ ๋Œ“๊ธ€.. ์˜คํ”ˆ ์†Œ์Šค๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘๊ฐ€ ์—ฌ๊ฐ€ ์‹œ๊ฐ„์— ๊ธฐ์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ๋ชจ๋“  ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ bower-chosen repo๊ฐ€ โ€‹โ€‹์žˆ์œผ๋ฏ€๋กœ npm ํŒจํ‚ค์ง€๊ฐ€ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

@pfiller bower-chosen ์„ chosen-packaged (๋˜๋Š” ํŠน์ • ๊ด€๋ฆฌ์ž์™€ ๊ด€๋ จ์ด ์—†๋Š” ๋‹ค๋ฅธ ์ด๋ฆ„)๋กœ ๋ฐ”๊พธ๊ณ  bower-chosen package.json ๋ฅผ ์ €์žฅ์†Œ์— ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

ํ˜„์žฌ package.json ํŒŒ์ผ์€ ์ฃผ๋กœ Chosen for ๊ฐœ๋ฐœ์ž์˜ dev ์š”๊ตฌ ์‚ฌํ•ญ์„ ์„ค์น˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์„œ๋ฒ„ ์ชฝ์ด ์•„๋‹Œ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์ž‘๋™ํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฏ€๋กœ npm์— ๋‘๋Š” ๊ฒƒ์ด ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? (์ด๊ฒƒ์€ ์‹ค์ œ ์งˆ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ €๋Š” node.js ๊ฐœ๋ฐœ์ž๊ฐ€ ์•„๋‹ˆ๋ผ PHP ์‚ฌ๋žŒ์ด๋ฏ€๋กœ npm ๊ทœ์น™์„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค)

์ฃผ๋œ ์ด์œ ๋Š” Browserify ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JS์—์„œ ์Šคํฌ๋ฆฝํŠธ ํƒœ๊ทธ๋ฅผ ๋„์ฒ˜์— ์•ฝ๊ฐ„ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ๋Œ€์‹  var Chosen = require('Chosen'); ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„ ์ธก JS๋Š” ์ด๋ฏธ require ํ˜•์‹์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, browserify๋Š” ์š”๊ตฌ ์‚ฌํ•ญ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜์—ฌ(์ข‹์€ ๋ชจ๋“ˆ ์ •์˜ node.js๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ดํŠธํ•˜์ง€๋งŒ ํ”„๋ก ํŠธ ์—”๋“œ์šฉ) ์ด๋ฅผ ํฐ ์ตœ์ข… build.js๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์ข…์†์„ฑ ๋ฒˆ๋“ค) ํŒŒ์ผ์„ index.html์— ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด +1 โ€” ๋‚ด ์•ฑ์—์„œ browserify๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์„ ํƒํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜์ง€๋งŒ ํ˜„์žฌ๋Š” vendor ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์ •๋ง ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ๋„ +1. Browserify๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด NPM์— ์žˆ๋Š” ๊ฒƒ์ด ๋งค์šฐ ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

๋‚˜์—๊ฒŒ๋„ +1 :) ๋˜ํ•œ browserify ์‚ฌ์šฉ

+1

+1

+1

+1

์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ $ ๋ฐ jQuery ๋ฅผ ์ „์—ญ ๋ฒ”์œ„ ๋ฐ ๋‚˜์ค‘์— chosen = require(../path/chosen.min.js)

์˜ˆ์‹œ:

 var $ = require('jquery');
 window.$ = $;
 window.jQuery = $;
 var chosen = require(./chosen.jquery.min.js)

์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. $('select').chosen();

์ถœ์ฒ˜: http://www.codefornow.com/2014/06/08/browserify-jquery-and-jquery-plugins/

+1

+1

Browserify ์ง€์›์„ ์œ„ํ•ด +1ํ•˜์‹ญ์‹œ์˜ค

์—ฌ๊ธฐ ์ˆ˜์ •์€ ๊ฝค ์‰ฝ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

  1. UMD ๋ž˜ํผ ์ถ”๊ฐ€
  2. ๋นŒ๋“œ๋œ ํŒŒ์ผ์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ถ”๊ฐ€
  3. ๋นŒ๋“œ๋œ ํŒŒ์ผ์„ npm ๊ฒŒ์‹œ

์„ ์ •๋œ ํŒ€์ด ๊ทธ๋Ÿฌํ•œ PR์— ๊ด€์‹ฌ์ด ์žˆ๋‹ค๋ฉด ์•Œ๋ ค์ฃผ์‹œ๋ฉด ํ•จ๊ป˜ ์ค€๋น„ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ๋œ ํŒŒ์ผ์„ Bower์— ์˜ฌ๋ฆด ์ˆ˜๋„ ์žˆ๊ณ  Chosen์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@jmeas

๋นŒ๋“œ๋œ ํŒŒ์ผ์„ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ถ”๊ฐ€

์ด๊ฒƒ์€ ์ผ์–ด๋‚˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๊ฒƒ์„ ํ•˜๊ณค ํ–ˆ๊ณ , ๊ทธ๊ฒƒ์€ ํŒ€์—๊ฒŒ ์•…๋ชฝ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ๋œ JS + CSS๋Š” ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ถ”๊ฐ€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด์Šˆ ํŠธ๋ž˜์ปค์—์„œ ์—ฌ๋Ÿฌ ๋ฒˆ ๋…ผ์˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์ „ ์ปดํŒŒ์ผ๋œ ๋ฒ„์ „์€ ๋ฆด๋ฆฌ์Šค ํŽ˜์ด์ง€ ๋ฅผ ํ†ตํ•ด ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค. ์„ ํƒํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ZIP์„ ํ†ตํ•œ ํŒจํ‚ค์ง€ ์ง€์ •์„ ์ง€์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋ณด๋ ค๋ฉด ๋ฐ”์šฐ์–ด ์ง€์นจ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์„ ํƒํ•œ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ZIP๋ฅผ ์ง€์›ํ•˜์ง€ _ ์•Š๊ฑฐ๋‚˜ ํ•˜๋Š” ๊ฒฝ์šฐ ์ด์— ๋Œ€ํ•œ ์ง€์›์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋ฌธ์ œ๋ฅผ ์—ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Browserify ์‚ฌ์šฉ์ž, ๋‚ด๊ฐ€ ์•„๋Š” ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ์œ„์—์„œ ์„ค๋ช…ํ–ˆ์ง€๋งŒ ๋‹ค์‹œ ํ•œ ๋ฒˆ ์š”์•ฝํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 1: Bower ๋ฐ window

README์˜ ์ง€์นจ์„ ๋”ฐ๋ฅด์‹ญ์‹œ์˜ค. ๋ถˆํ–‰ํžˆ๋„ ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ npm ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ์— bower ๋ฅผ ์„ค์ •ํ•˜๊ณ  zip์„ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค. ๋‹ค์Œ ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ์— ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค.

var $ = require('jquery');

// Chosen requires this :(
window.jQuery = $;

require('path/to/bower_components/chosen_v1.3.0/chosen.jquery');

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! jQuery๋Š” ์˜ˆ์ƒ๋Œ€๋กœ ์˜๊ตฌ์ ์œผ๋กœ ์ˆ˜์ •๋˜๋ฏ€๋กœ ์•ฑ์˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์„ ํƒํ•˜๋„๋ก ์š”๊ตฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ์˜ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ด window.jQuery ์ฐธ์กฐํ•˜๊ธฐ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋„๋ก ๋ธŒ๋ผ์šฐ์ € ์ „์—ญ์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋ฆฐํ„ฐ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ •์ž์™€ ์ฐฝ๋ฌธ์— ๊ด€์‹ฌ์ด ์—†์œผ์‹ ๊ฐ€์š”? ๋‚˜๋Š” ๋‹น์‹ ์„ ๋Š๋‚€๋‹ค. ๋‘ ๋ฒˆ์งธ ์˜ต์…˜์€...

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ• 2: ์ง์ ‘ ํฌ์žฅ

๋‚ด ์•ฑ์—๋Š” ์ข…์ข… ๋ชจ๋“ˆ ๋กœ๋”๋ฅผ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํŒจํ‚ค์ง€๋˜์ง€ ์•Š์€ ์†Œ์ˆ˜์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋Œ€ํ•œ vendor ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํƒํ•œ ์ฃผ์œ„์— ์ด UMD ๋ž˜ํผ ๋ฅผ ์ถ”๊ฐ€

์™œ ๊ทธ๋ƒฅ browserify-shim์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ํ™•์‹คํžˆ ์˜ต์…˜์ž…๋‹ˆ๋‹ค. ๋‚ด ์•ฑ์˜ ํ…Œ์ŠคํŠธ๋Š” Node+JSDom์—์„œ ์‹คํ–‰๋˜๋ฏ€๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ shimmํ•˜๊ฑฐ๋‚˜ ์•จ๋ฆฌ์–ด์‹ฑํ•˜์ง€ ์•Š๊ณ  ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒˆ์ฃผ๋ง๊นŒ์ง€ npm ์™€ bower ์— Chosen ๋นŒ๋“œ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ํฌ๋งํ•ฉ๋‹ˆ๋‹ค. UMD๋กœ ๊ฐ์‹ธ์ ธ ์žˆ์–ด์„œ ์‚ฌ๋žŒ๋“ค์€ ์•ž์œผ๋กœ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด๋„ ๊ฑฐ๊ธฐ์—์„œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๊ธฐ์‹œ์ผœ์ฃผ์‹œ๋ฉด ์ตœ์‹  ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ท€ํ•˜๊ฐ€ ๋ฏธ๋ž˜์˜ ๋…์ž์ด๊ณ  ์ œ ํฌํฌ๊ฐ€ ์ตœ์‹  ๋ฒ„์ „์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฌธ์ œ๋ฅผ ์—ด๋ฉด ๋ฆด๋ฆฌ์Šค๋ฅผ ์ž˜๋ผ๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

:+1: ๊ธฐ๋ณธ bower ๊ตฌ์„ฑ ์š”์†Œ์šฉ. scss ํŒŒ์ผ์„ ์ง์ ‘ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

npm์— ์„ ํƒ๋œ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด +1.

npm์— ์„ ํƒ๋œ ํŒจํ‚ค์ง€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด +9001.

Chosen์— ๋Œ€ํ•œ ๊ฐœ๋ฐœ์ด ๋Š๋ฆฐ ์ง€์ ์— ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ(์ ์–ด๋„ ํ˜„์žฌ๋กœ์„œ๋Š”) ์œ ์ง€ ๊ด€๋ฆฌ์ž๋Š” Chosen์ด ์ž‘๋™ํ•˜๋Š” ํ™˜๊ฒฝ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ prob ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋ฅผ ๋ถ„๊ธฐํ•˜์—ฌ npm ์ง€์›(์›ํ•˜๋Š” ๊ฒฝ์šฐ UMD ์ง€์›๋„ ์ถ”๊ฐ€)์„ ์ถ”๊ฐ€ํ•˜์‹ญ์‹œ์˜ค. npm/Bower( modern-chosen ์•„๋ž˜)์— ์ƒˆ ๋ฆด๋ฆฌ์Šค๋ฅผ ๊ฒŒ์‹œํ•œ ๋‹ค์Œ PR์„ ์—ด์–ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์—…์ŠคํŠธ๋ฆผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋“ค์ด ๊ทธ๊ฒƒ์„ ๋ณ‘ํ•ฉํ•˜๋ฉด ํ›Œ๋ฅญํ•ฉ๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ๋ชจ๋“ˆ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‚ฌ๋žŒ๋“ค์ด ๋Œ€์‹  ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(ํŠน์ •์ธ์ด ์•„๋‹Œ "๋ˆ„๊ตฌ๋“ ์ง€"๋ผ๋Š” ์˜๋ฏธ๋กœ "you"๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค :P )

Bower๊ฐ€ ์„ ํƒํ•œ ํฌํฌ์— ํŒจํ‚ค์ง€ ์ •์˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฒŒ์œผ๋ฆ„์ธ๊ฐ€, ๋ฌด๋Šฅ์ธ๊ฐ€? ์ž„๋Œ€ ์‹œ ๋…ธ๋“œ ์‚ฌ์šฉ์ž๋ฅผ ์™„์ „ํžˆ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋Œ€์‹  ์–ด๋Š ์ •๋„ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Bower๊ฐ€ ์„ ํƒํ•œ ํฌํฌ์— ํŒจํ‚ค์ง€ ์ •์˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ฒŒ์œผ๋ฆ„์ธ๊ฐ€, ๋ฌด๋Šฅ์ธ๊ฐ€? ์ž„๋Œ€ ์‹œ ๋…ธ๋“œ ์‚ฌ์šฉ์ž๋ฅผ ์™„์ „ํžˆ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋Œ€์‹  ์–ด๋Š ์ •๋„ ๋งŒ์กฑ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ์‚ฌ๋ ค ๊นŠ์€ ๋Œ“๊ธ€.. ์˜คํ”ˆ ์†Œ์Šค๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ฆฌ๊ณ  ๋ชจ๋‘๊ฐ€ ์—ฌ๊ฐ€ ์‹œ๊ฐ„์— ๊ธฐ์—ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋„ ๋ชจ๋“  ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์œ ์ง€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ bower-chosen repo๊ฐ€ โ€‹โ€‹์žˆ์œผ๋ฏ€๋กœ npm ํŒจํ‚ค์ง€๊ฐ€ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ์œผ๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

@pfiller bower-chosen ์„ chosen-packaged (๋˜๋Š” ํŠน์ • ๊ด€๋ฆฌ์ž์™€ ๊ด€๋ จ์ด ์—†๋Š” ๋‹ค๋ฅธ ์ด๋ฆ„)๋กœ ๋ฐ”๊พธ๊ณ  bower-chosen package.json ๋ฅผ ์ €์žฅ์†Œ์— ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

npm ํŒจํ‚ค์ง€๋ฅผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” PR(#2550)์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น PR์— ์ฒจ๋ถ€๋œ ์˜ˆ์ œ ํŒจํ‚ค์ง€๊ฐ€ ์ด ํŒจํ‚ค์ง€๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๊ฒ€ํ† ํ•˜์‹ญ์‹œ์˜ค. ๊ฐ์‚ฌ ํ•ด์š”!

2550์ด ๋ณ‘ํ•ฉ๋˜๊ณ  Chosen๋„ ์ด์ œ NPM์— chosen-js

@koenpunt ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! ๋ฌธ์ œ๋Š” ํŒจํ‚ค์ง€์— ๋นŒ๋“œ๋œ ํŒŒ์ผ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด ์›์‹œ scss๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ด€๋ จ: #2347

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