ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฌธ์ œ

css-loader๋ฅผ ํ†ตํ•ด css ํŒŒ์ผ์„ ์ฝ์–ด์„œ JS string ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•œ ๋’ค์— html ํŒŒ์ผ์— ์ ์šฉ์‹œ์ผœ ์ฃผ๊ธฐ ์œ„ํ•ด style-loader๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

 

ํ•˜์ง€๋งŒ js ์ƒ์—์„œ ํ•ด๋‹น cssํŒŒ์ผ์„ ๊ฐ์ฒด๋กœ import ํ•˜์—ฌ ์Šคํƒ€์ผ์„ ์ ์šฉํ•˜๋Š” ๊ณผ์ •์€ ์„ฑ๊ณตํ•˜์˜€์ง€๋งŒ html ํŒŒ์ผ์— ํด๋ž˜์Šค๊ฐ€ ๋ถ€์—ฌ๋œ ํƒœ๊ทธ๋“ค์€

ํ•ด๋‹น cssํŒŒ์ผ์˜ ์Šคํƒ€์ผ์ด ์ ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค.

 

๋ฌธ์ œ ํ•ด๊ฒฐ

style-tag

ํ•ด๋‹น style ํƒœ๊ทธ๋Š” style-loader์— ์˜ํ•ด ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜์–ด ์ดํ›„์— html์— ์ถ”๊ฐ€๋˜์—ˆ๊ณ  ์ด์— ๋Œ€ํ•œ ๊ฒฐ๊ณผ๋Š” ๊ฐœ๋ฐœ ์ฐฝ์„ ์—ด์–ด ํ™•์ธํ•œ ๊ฒƒ์ด๋‹ค.

 

style ํƒœ๊ทธ๋ฅผ ์‚ดํŽด ๋ณด๋ฉด body์™€ ๊ฐ™์ด ํƒœ๊ทธ๋ช… ์„ ํƒ์ž๋Š” cssํŒŒ์ผ์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋Š” ๋ฐ˜๋ฉด ํด๋ž˜์Šค๋ช… ์„ ํƒ์ž์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š”

์›๋ž˜์˜ ํด๋ž˜์Šค๋ช…์ด ์•„๋‹Œ ์ด์ƒํ•œ ์ฝ”๋“œ๋ช…๊ณผ ๊ฐ™์€ ๋„ค์ด๋ฐ์ด ์ƒˆ๋กญ๊ฒŒ ๋ถ€๊ณผ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ฒฐ๊ณผ์ ์œผ๋กœ htmlํŒŒ์ผ์— ํด๋ž˜์Šค๊ฐ€ ๋ถ€์—ฌ๋œ ํƒœ๊ทธ๋“ค์— style์ด ์ ์šฉ๋˜์ง€ ์•Š์€ ์›์ธ์€ ์ •์ ์œผ๋กœ ํด๋ž˜์Šค๋ช…์ด ๊ณ ์ •๋˜์–ด ์žˆ๋Š” ํƒœ๊ทธ๊ฐ€ cssํŒŒ์ผ ๋‚ด์—๋™์ ์œผ๋กœ ์ƒˆ๋กญ๊ฒŒ ๋ฐ”๋€ ํด๋ž˜์Šค๋ช…๊ณผ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•œ ๊ฒƒ์ด์—ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ์™œ webpack์€ ๋ฒˆ๋“ค๋งํ•˜๋Š” ๊ณผ์ •์—์„œ cssํŒŒ์ผ ๋‚ด์˜ ํด๋ž˜์Šค๋ช…๋“ค์„ ์ด๋Ÿฌํ•œ ๊ณ ์œ  ์‹๋ณ„ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€๊ณผํ•˜๋Š” ๊ฒƒ์ธ์ง€ ๊ถ๊ธˆํ•˜์—ฌ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐพ์•„๋ณด์•˜๋‹ค.

 

https://webpack.js.org/loaders/css-loader/#scope

 

css-loader | webpack

webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.

webpack.js.org

 

์œ„์˜ ๊ถ๊ธˆ์ฆ์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ๋‹ต์€ ๋‚˜์™€ ์žˆ์ง€ ์•Š์ง€๋งŒ css-loader๋Š” options ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์ค‘ module์— ์˜ํ•ด ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ๊ณผ module ์˜ต์…˜์€ css-selectors์˜ scope๋ฅผ ๋ณด์žฅํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์•˜๋‹ค.

 

์ด์— ๋Œ€ํ•ด ๋” ์ฐพ์•„ ๋ณธ ๊ฒฐ๊ณผ, ๋ฆฌ์•กํŠธ์—์„œ์˜ CSS Module ๊ธฐ๋Šฅ๊ณผ ๋งค์šฐ ํก์‚ฌํ•˜๋‹ค๋Š” ์ ์„ ์•Œ์•˜๋‹ค.

CSS Module์€ CSS๋ฅผ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ CSS ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ์ž๋™์œผ๋กœ ๊ณ ์œ ํ•œ ํด๋ž˜์Šค๋„ค์ž„์„ ์ƒ์„ฑํ•˜์—ฌ ์Šค์ฝ”ํ”„๋ฅผ ์ง€์—ญ์ ์œผ๋กœ ์ œํ•œํ•œ๋‹ค

 

์ฆ‰, ์ƒˆ๋กญ๊ฒŒ ๋ฐ”๋€ ํด๋ž˜์Šค๋ช…์€ ๊ณ ์œ ์˜ ์‹๋ณ„ ๋ฒˆํ˜ธ๋กœ์„œ ์Šค์ฝ”ํ”„๋ฅผ ๋ณด์žฅ ๋ฐ›๊ธฐ ์œ„ํ•จ์ด์—ˆ๋‹ค.

 

ํ”„๋กœ์ ํŠธ ๋‹จ์œ„๊ฐ€ ์ปค์ง€๊ฒŒ ๋จ์— ๋”ฐ๋ผ ์Šค์ฝ”ํ”„(๋ฒ”์œ„) ๋ณ„๋กœ CSS ํด๋ž˜์Šค๋ฅผ ๋ณด์žฅ๋ฐ›์•„์•ผ ํ•˜๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ค‘์š”ํ•œ ๊ณผ์ •์˜ ์ผํ™˜์ด๊ณ  ์ ์šฉ ์‚ฌํ•ญ์ด์ง€๋งŒ, ํ—ค๋‹น ํ”„๋กœ์ ํŠธ์€ ์ปดํฌ๋„ŒํŠธ ๋ณ„๋กœ ๊ธฐ๋Šฅ ๋ฐ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฐ”๋‹๋ผ JS๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‹ฑ๊ธ€ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ฃผ์š” ๋ชฉ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์˜€๋‹ค.

	 {
                test: /\.css$/i,
                use: [
                    {
                        loader: 'style-loader',
                        options: {
                            injectType: 'singletonStyleTag'
                        }
                    },
                    {
                        loader: 'css-loader'
                        // options: {
                        //     modules: true
                        // }
                    }
                ]
            }

 

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG
more
ยซ   2024/10   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ