์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- async
- JS #ํ๋ก์ ํธ
- execCommand
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- Project
- js
- sql
- slow and steady
- ๋น๋๊ธฐ
- Import
- ๊ฒ์
- ๋๊ธฐ
- ํผํ
- json
- prj
- mysql
- await
- database
- webpack
- https://m.blog.naver.com/tt2t2am1118/221010125300
- object
- addEventListener
- promise
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- setTimeout()
- eport
- db
- Porject
- ajax
- callback
- Today
- Total
C-log
๐งWebpack : Loader ๋ณธ๋ฌธ
์ด๋ฒ ํฌ์คํ ์์๋ ๋ก๋์ ๊ดํด์ ๋ค๋ฃฐ ๊ฒ์ด๋ค. ์นํฉ์ ๋ชจ๋ ํ์ผ๋ค์ ๋ชจ๋๋ก ๋ฐ๋ผ๋ณธ๋ค. ๋ฐ๋ผ์ import ๊ตฌ๋ฌธ์ ์ฌ์ฉํ๋ฉด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋ ์์ผ๋ก ๊ฐ์ ธ์ฌ ์ ์๋ค. ์ฆ, import ๊ตฌ๋ฌธ์ ์ฌ์ฉํด์ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋กค ์ฌ์ฉํ ์ ์๋ ์ด์ ๋ ๋ฐ๋ก ๋ก๋ ๋๋ฌธ์ด๋ค. ๋ก๋๋ ํ์ ์คํฌ๋ฆฝํธ์ ๊ฐ์ ๋ค๋ฅธ ์ธ์ด๋ฅผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์ผ๋ก ๋ณํํด ์ฃผ๊ฑฐ๋ ์ด๋ฏธ์ง๋ฅผ data URL ํ์์ ๋ฌธ์์ด๋ก ๋ณํํ๋ค. ๋ฟ๋ง์๋๋ผ CSS ํ์ผ์ ์๋ฐ์คํฌ๋ฆฝ์์ ์ง์ ๋ก๋ฉํ ์ ์๋๋ก ํด์ค๋ค.
๋ก๋์ ๋์ ์๋ฆฌ
์ฐ์ ์๋์ ๊ฐ์ด ๋ก๋๋ฅผ ๊ด๋ฆฌํ๋ js ํจ์ํ ํ์ผ์ ํ๋ ๋ง๋ค์ด์ผ ํ๋ค.
// my-webpack-loader.js
module.exports = function myWebpackLoader(content) {
console.log('myWebpackLoader๊ฐ ๋์ํจ');
return content;
}
์ด์ ์ด ํ์ผ์ webpack.config.js์์ ๊ด๋ฆฌ ํ ์ ์๊ฒ ์ฝ๋๋ฅผ ์๋์ ๊ฐ์ด ์ถ๊ฐํ๋ค.
// webpack.config.js
/* ์ดํ ์๋ต */
module: {
rules: [
{
test: /\.js$/,
use: [
path.resolve('./my-webpack-loader.js')
]
}
]
}
- module: Webpack ์ค์ ์ ์ฃผ์ ์น์ ์ค ํ๋๋ก ๋ชจ๋ ๊ด๋ จ ์ค์ ์ ํฌํจํ๋ค.
- rules: module ์น์ ๋ด์ ๋ฐฐ์ด๋ก ํ์ผ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๊ท์น๋ค์ ์ ์ํ๋ค. ๊ฐ ๊ท์น์ ๊ฐ์ฒด๋ก ํํ๋๋ค.
- test: ๊ฐ ๊ท์น ๊ฐ์ฒด ๋ด์ ์์ฑ์ผ๋ก ํ์ผ ์ด๋ฆ ๋๋ ๊ฒฝ๋ก๊ฐ ์ด ์ ๊ท ํํ์๊ณผ ์ผ์นํ๋ ํ์ผ์ ๋ํด ์ด ๊ท์น์ ์ ์ฉํ๋ค. ์ฌ๊ธฐ์๋ \.js$ ์ ๊ท ํํ์์ ์ฌ์ฉํ์ฌ ๋ชจ๋ .js ํ์ผ์ ๋์์ผ๋ก ์ง์ ํ๋ค.
- use: use ์์ฑ์ ํด๋น ํ์ผ์ ์ ์ฉํ ์ ๋๊ฒฝ๋ก๋ก ๋ก๋๋ฅผ ์ง์ ํ๋ค. ์ด ๊ฒฝ์ฐ์๋ ์ฌ์ฉ์ ์ ์ ๋ก๋๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค. path.resolve('./my-webpack-loader.js')๋ ํ๋ก์ ํธ ๋ฃจํธ ๋๋ ํ ๋ฆฌ์ ์๋ my-webpack-loader.js ํ์ผ์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ๋ฐํํ๋ค. ๋ฐ๋ผ์ ์ด ๋ก๋๋ my-webpack-loader.js ํ์ผ์์ ์ ์ํ ๋๋ก .js ํ์ผ์ ์ฒ๋ฆฌํ๋ค.
์์ ๊ฐ์ด ์์ฑ์ ํ๊ณ yarn run build๋ฅผ ํ๊ฒ๋๋ฉด ์๋์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธ ํ ์ ์๋ค.
:: CMD
:: npm run build
:: yarn run build
myWebpackLoader๊ฐ ๋์ํจ
myWebpackLoader๊ฐ ๋์ํจ
Hash: 83800a72d220d80c4d42
Version: webpack 4.47.0
Time: 383ms
Built at: 2024. 07. 12. ์คํ 7:29:05
Asset Size Chunks Chunk Names
main.js 4.57 KiB main [emitted] main
Entrypoint main = main.js
[./src/app.js] 126 bytes {main} [built]
[./src/math.js] 47 bytes {main} [built]
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์๋ฌธ์ด ๋ ๋ค. ์ 'myWebpackLoader๊ฐ ๋์ํจ'์ด ๋ ๋ฒ ์ฐํ๊น? ์ฐ์ ์ฐ๋ฆฌ๊ฐ ์ค์ ํ webpack.config.js์ Entry์ ๊ฒฝ๋ก ์ค์ ์ ๋ณด๋ฉด './src/app.js'๋ก ์ค์ ์ด ๋์ด ์๋ค. ๋ฐ๋ผ์ app.js๋ app.js๋ฅผ ์คํํ๊ธฐ ์ , math.js๋ฅผ ์คํํ๊ณ app.js๋ฅผ ์คํํ๋ค. ์ฆ, js ํ์ผ ๋ก๋๊ฐ ๋ ๋ฒ ์คํ ๋ ๊ฒ์ด๋ค.
๊ฐ๋จํ๊ฒ ๋ก๋ ์ปค์คํ ํ๊ธฐ
์ด๋ฒ์๋ math.js์ ์๋ console.log๋ฅผ alert๋ก ๋์ ํ ์ ์๊ฒ ์ปค์คํ ํด๋ณด์. ์๋์ ๊ฐ์ด ์ฝ๋๋ฅผ ์์ ํ๋ฉด ๋๋ค.
module.exports = function myWebpackLoader(content) {
return content.replace('console.log(', 'alert(');
}
์ด์ ์ ์คํ์ด ๋๋์ง ํ์ธ์ ํ๊ธฐ ์ํด์ ์๋์ ๊ฐ์ด ๋ช ๋ น์ ํด๋ณด์.
:: CMD
start index.html
์คํ์ ํด๋ณด๋ฉด ์๋์ ๊ฐ์ด ์๋ฌ๊ฐ ๋์จ๋ค.
Access to script at 'file:///D:/myclass/0_Programming-content/Frontend-Development-Environment/dist/main.js' from origin 'null' has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome, https, chrome-untrusted.Understand this error
main.js:1
Failed to load resource: net::ERR_FAILEDUnderstand this error
์ ์๋ฌ๋ file ๊ฒฝ๋ก๋ก ํ์ผ์ ์ด๋ ค๊ณ ์๋ํด์ ๋ฐ์ํ๋ ๋ณด์ ์ค๋ฅ์ด๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์ Live Server๋ก ์คํํ๋ฉด ๋๋ค. ์คํํ๊ฒ ๋๋ฉด console.log๋ก ์ฐํ๋ '3'์ด alert๋ก ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธ ํ ์ ์๋ค.
๋ค์ ํฌ์คํ ์์๋ ์์ฃผ ์ฌ์ฉ๋๋ ๋ก๋์ ๊ดํด์ ๋ค๋ฃจ์ด ๋ณผ ๊ฒ์ด๋ค.
'โ๏ธReact > ๐งFront-Dev-Environment' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐งWebpack : file-loader (0) | 2024.07.17 |
---|---|
๐งWebpack : css-loader, style-loader (0) | 2024.07.17 |
๐งWebpack : Entry (0) | 2024.06.21 |
๐งWebpack : module (1) | 2024.06.17 |
๐ง์ธ๋ถ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ : npm install (0) | 2024.06.17 |