์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- setTimeout()
- mysql
- eport
- promise
- db
- JS #ํ๋ก์ ํธ
- async
- Porject
- ํผํ
- database
- await
- https://m.blog.naver.com/tt2t2am1118/221010125300
- ๋๊ธฐ
- prj
- addEventListener
- webpack
- object
- json
- execCommand
- Import
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- callback
- ๋น๋๊ธฐ
- js
- Project
- ajax
- sql
- ๊ฒ์
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- slow and steady
- Today
- Total
C-log
๐งWebpack : css-loader, style-loader ๋ณธ๋ฌธ
๐งWebpack : css-loader, style-loader
4:Bee 2024. 7. 17. 21:17์ด๋ฒ ํฌ์คํ ์์๋ ์์ฃผ ์ฌ์ฉ๋๋ loader์ ๊ดํด์ ๋ค๋ฃจ์ด ๋ณผ ๊ฒ์ด๋ค. ๋จผ์ css-loader์ style-loader๋ฅผ ๋ค๋ฃจ์ด ๋ณผ๊ฒ์ด๋ค. ๊ฐ์๋ ์งง์ง๋ง ๋ค๋ฃจ๊ณ ์๋ ๋ด์ฉ์ด ๋ง์์ ๋๋ฒ์ ๋๋์ด์ ํฌ์คํ ์ ํ ๊ฒ์ด๋ค.
//app.js
import * as math from './math.js'
import './app.css';
// import { sum } from './math.js';
console.log(math.sum(1, 2));
// console.log(sum(1,2));
//app.css
body {
background-color: green;
}
์์ ๊ฐ์ด cssํ์ผ์ ์ถ๊ฐํ๊ณ app.js์ importํ๊ณ build๋ฅผ ํด๋ณด๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธ ํ ์ ์๋ค.
D:\myclass\0_Programming-content\Frontend-Development-Environment>yarn run build
Hash: b21c535998629576ab9e
Version: webpack 4.47.0
Time: 515ms
Built at: 2024. 07. 17. ์คํ 6:26:18
Asset Size Chunks Chunk Names
main.js 5.34 KiB main [emitted] main
Entrypoint main = main.js
[./src/app.css] 272 bytes {main} [built] [failed] [1 error]
[./src/app.js] 142 bytes {main} [built]
[./src/math.js] 47 bytes {main} [built]
ERROR in ./src/app.css 1:5
Module parse failed: Unexpected token (1:5)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
> body {
| background-color: green;
| }
@ ./src/app.js 2:0-19
์ ์ด๋ฌํ ๋ฌธ์ ๊ฐ ๋ฐ์ ํ์๊น? ์ด๋ ์๋ฐ์คํธ๋ฆฝํธ๋ก๋ถํฐ css๋ฅผ ๋ชจ๋๋ก ์ฒ๋ฆฌํจ์ ์์ด์ ๋ฐ์๋ ๋ฌธ์ ์ด๋ค. ์ด๋ฅผ css-loader์ธ๋ฐ ์ด๋ฒ ์๊ฐ์ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ๋ค๋ฃจ์ด ๋ณผ ๊ฒ์ด๋ค. ๋จผ์ loader๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ์๋์ ๊ฐ์ด ์ค์ ์ด ํ์ํ๋ค.
::CMD
npm install css-loader
yarn add css-loader
์ด๋ ๊ฒ css-loader๋ฅผ ์ค์นํ๋ฉด ๊ธฐ์กด package.json๊ณผ ๋ฌ๋ฆฌ dependcies์ css-loader๊ฐ ์์ฑ๋ ๊ฒ์ ์ ์ ์๋ค. ์ด๋ ๋ฐฐํฌ๊ฐ ๋ ๋ ์ฌ์ฉ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ผ๋ ๊ฒ์ ์ ์ ์๋ค.
//(์ )-package.json
{
"name": "Frontend-Development-Environment",
"version": "1.0.0",
"packageManager": "yarn@4.3.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "echo \"์ฌ๊ธฐ์ ์คํํธ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.\""
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.41.5",
"webpack-cli": "^3.3.10"
}
}
//(ํ)-package.json
{
"name": "Frontend-Development-Environment",
"version": "1.0.0",
"packageManager": "yarn@4.3.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"start": "echo \"์ฌ๊ธฐ์ ์คํํธ ์คํฌ๋ฆฝํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.\""
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^4.41.5",
"webpack-cli": "^3.3.10"
},
"dependencies": {
"css-loader": "^7.1.2"
}
}
์ด์ webpack.config ํ์ผ๋ก ๋์๊ฐ์ css๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ์ค์ ํ ๊ฒ์ด๋ค.
const path = require('path');
module.exports = {
mode: 'development',
entry: {
main: './src/app.js'
},
output: {
path: path.resolve('./dist'),
filename: '[name].js'
},
module: {
rules: [
{
test: /\.js$/,
use: [
path.resolve('./my-webpack-loader.js')
]
}
{
test: /\.css$/,
use: [
'css-loader'
]
}
]
}
}
์์ ๊ฐ์ด ์ค์ ์ ํ๋ฉด Entry ํฌ์ธํฐ ๋ถํฐ ๋ชจ๋ ํ์ผ๋ค์ ํ์ธํ๋ฉด์ ์ฐ๋ฆฌ๊ฐ ์ค์ ํ css ํ์ผ์ ํ์ธํ๊ณ ์ด๋ฅผ css-loader๊ฐ css ํ์ผ์ ์ฒ๋ฆฌํ๊ฒ ๋ ๊ฒ์ด๋ค. ๋ค์ yarn run build๋ฅผ ํ๊ฒ๋๋ฉด ์ฑ๊ณต์ ์ผ๋ก ๋น๋๊ฐ ๋๊ณ dist ํด๋ ์๋๋ฅผ ํ์ธํ๋ฉด main.jsํด๋ ๋ด๋ถ์ ์๋์ ๊ฐ์ด css์ฝ๋๋ฅผ ํ์ธ ํ ์ ์๋ค.
//main.js
/** ์ดํ์๋ต */
{
...body {\\n| background-color: green;\\n| }\");\n\n//# sourceURL=webpack:///./src/app.css?
}
/** ์ดํ์๋ต */
์ด์ liver-server๋ก ํ์ธ์ ํ๋ฉด ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
Live reload enabled.
app.css:1 Uncaught Error: Module parse failed: Unexpected token (1:5)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
> body {
| background-color: green;
| }
at eval (app.css:1:7)
at ./src/app.css (main.js:96:1)
at __webpack_require__ (main.js:20:30)
at eval (app.js:3:66)
at ./src/app.js (main.js:108:1)
at __webpack_require__ (main.js:20:30)
at main.js:84:18
at main.js:87:10
๊ทธ๋ฆฌ๊ณ ์คํ๋ ์น์ ๊ฐ๋ฐ๋๊ตฌ๋ก body๋ฅผ ํ์ํด๋ณด๋ฉด ์ฐ๋ฆฌ๊ฐ ์ค์ ํ css๊ฐ ์ ์ฉ๋์ง ์์ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
๊ทธ๋ ๋ค๋ฉด ์ ์ด๋ ๊ฒ ๋ ๊ฒ์ผ๊น? ๊ทธ๊ฒ์ ์ฐ๋ฆฌ๊ฐ DOM์ ๊ฐ๊ณผํ ๊ฒ์ด๋ค. ๊ทธ ๋ง์ HTML์ฝ๋๊ฐ DOM์ด๋ผ๋ ๋ชจ์ต์ผ๋ก ๋ณํ์ด ๋์ง ์์์ ๊ทธ๋ ๋ค. ์ฆ, JS๊ฐ Document ๋ฌธ์๋ก ๋ณํ์ด ๋์ด์ผ ๋ธ๋ผ์ฐ์ ์์ ๋ฌธ์๋ก ํ์ธ์ด ๋ ์ ์๋ฏ css๋ CSS-OM์ด๋ผ๋ ๋ฌธ์๋ก ๋ณํ์ด ๋์ด์ผ ํ๋ค. ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํด์๋ HTMLํ์ผ์์ cssํ์ผ์ ์ง์ ๋ถ๋ฌ์ค๊ฑฐ๋ inline-Style๋ก ์ง์ ๋ฃ์ด์ค์ผ ํ๋ค.(css๊ฐ css ํ์ผ๋ณด๋ค css-inline-Style์ ๋จผ์ ์ฝ๋ ์ด์ ๊ฐ ์ฌ๊ธฐ์ ํฌํจ๋๋ค.) ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ JSํ์ผ์์ ๋ชจ๋๋ก css๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ํจํค์ง๋ฅผ ์ค์ ํด์ผํ๋ค. ์๋์ ๊ฐ์ด ์ถ๊ฐ์ ์ด ํจํค์ง๋ฅผ ์ค์นํ์.
::CMD
yarn add style-loader
npm install style-loader
Style-loader๋ JS๋ก ๋ณํ๋ css๋ฅผ HTML์ ๋ฃ์ด์ฃผ๋ ์ญํ ์ ํ๋ค. ์ญ์๋ pacakge.json์ dependenies์ style-loader๊ฐ ์ถ๊ฐ๋ ๊ฒ์ ํ์ธ ํ ์ ์์๋ค. ์ด์ ๋ง์ฐฌ๊ฐ์ง๋ก webpack.config ํ์ผ์ ์๋์ ๊ฐ์ด ์ค์ ์ ์ถ๊ฐํด์ค๋ค.
const path = require('path');
module.exports = {
mode: 'development',
entry: {
main: './src/app.js'
},
output: {
path: path.resolve('./dist'),
filename: '[name].js'
},
module: {
rules: [
{
test: /\.js$/,
use: [
path.resolve('./my-webpack-loader.js')
]
},
{
test: /\.css$/,
use: [
'style-loader',
'css-loader'
]
}
]
}
}
์ถ๊ฐ ์ค์น๊ฐ ๋์์ผ๋ฉด ๋ค์ run build๋ฅผ ์ํํ๋ฉด ๋๋ค. ์ํํ ๊ฒฐ๊ณผ ์๋์ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
D:\myclass\0_Programming-content\Frontend-Development-Environment>yarn run build
Hash: 538273a0ce3b6faa1797
Version: webpack 4.47.0
Time: 173ms
Built at: 2024. 07. 17. ์คํ 7:10:02
Asset Size Chunks Chunk Names
main.js 4.7 KiB main [emitted] main
Entrypoint main = main.js
[./src/app.js] 142 bytes {main} [built]
[./src/math.js] 47 bytes {main} [built]
ERROR in ./src/app.js
Module not found: Error: Can't resolve 'style-loader' in 'D:\myclass\0_Programming-content\Frontend-Development-Environment'
@ ./src/app.js 2:0-19
ํ์ฌ style-loader๋ฅผ ์ฐพ์ง ๋ชปํ๋ ๋ถ์์ฌ๊ฐ ๋ฒ์ด์ก๋๋ฐ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ ์๋์ ๊ฐ์ด yarn์ cacheํ์ผ์ ์ญ์ ํด ์ฃผ์๋ค. ์ดํ yarn install๋ก ๋ค์ yarn์ ์ค์นํ๊ณ ๋ค์ run build๋ฅผ ํด์ฃผ์์ง๋ง ๊ณ์ํด์ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ฐ๋ณตํ๋ฉฐ webpack๋ฅผ ์์คํ๊ฒ ๋๋ ๋ถ์์ฌ๊ฐ ์ผ์ด๋ฌ๋ค. ์ด๋ด ๋๋ ๋ค์ webpack์ ์ค์นํ๋ฉด ๋๋ค.
webpack ๋ฎ์ด์ ์ฌ์ค์น
yarn add webpack --dev
๊ทธ๋ ๋ค๋ฉด ์ ๊ณ์ํด์ ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ๋ณต์ ์ผ๊น? ํ์ธํด ๋ณด๋ ํ์ฌ ๋๋ node_modules ๊ธฐ๋ฐ์ด ์๋ pnp๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ณ ์๋ค. ๋ฐ๋ผ์ pnp๊ฐ ์ผ๋ถ ํธํ๋์ง ์์์ ์ผ์ด๋ ๋ถ์์ฌ์๋ ๊ฒ์ด๋ค. pnpFallbackMode: all์ ํธํ์ฑ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ์ฌ์ฉ๋๋ค. ๋ฐ๋ผ์ ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ yarnrc.ymlํ์ผ์ ์๋์ ๊ฐ์ด ์ถ๊ฐํ๋ฉด ๋๋ค.
//yarnrc.yml
pnpFallbackMode: all
์ดํ yarn cache clear๋ฅผ ์คํํ๊ณ yarn install ํ yarn run build๋ฅผ ํ๋ ์ ์์ ์ผ๋ก ๋์์ ํ๋ค.
::CMD
yarn cache clear
yarn install
yarn run build
ํน์๋ ํด์ package.json์ ํ์ธํด๋ณด๋ ๋ชจ๋ ํจํค์ง์ ์นํฉ๋ค ๋ฒ์ ์ด ์์ ๋ฒ์ ์ผ๋ก ์ ๊ทธ๋ ์ด๋ ๋์ด ์์๋ค.
//package.json
"devDependencies": {
"webpack": "^5.75.0",
"webpack-cli": "^4.10.0"
},
"dependencies": {
"css-loader": "^6.7.1",
"style-loader": "^3.3.1"
}
์์ ์์ ํ์ฌ ์งํํ๊ณ ์๋ ๋ฒ์ ๊ณผ๋ ๋ง์ง ์์ง๋ง ์ ์์ ์ผ๋ก ๋์ํ๊ณ ์์ผ๋ ์ฐ์ ์ ์ด๋ ๊ฒ ๋ฒ์ ์ ๋ง์ถฐ์ ์งํ์ ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
REFERNCE
'โ๏ธReact > ๐งFront-Dev-Environment' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐งWebpack : url-loader (0) | 2024.07.19 |
---|---|
๐งWebpack : file-loader (0) | 2024.07.17 |
๐งWebpack : Loader (0) | 2024.06.23 |
๐งWebpack : Entry (0) | 2024.06.21 |
๐งWebpack : module (1) | 2024.06.17 |