| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ | 
|---|---|---|---|---|---|---|
| 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 | 
- ๊ฒ์
 - execCommand
 - Import
 - object
 - Project
 - https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
 - mysql
 - js
 - await
 - setTimeout()
 - slow and steady
 - Porject
 - sql
 - ๋๊ธฐ
 - db
 - json
 - webpack
 - eport
 - https://m.blog.naver.com/tt2t2am1118/221010125300
 - ์ฐธ๊ณ ๋ธ๋ก๊ทธ
 - callback
 - ๋น๋๊ธฐ
 - addEventListener
 - promise
 - ajax
 - database
 - JS #ํ๋ก์ ํธ
 - ํผํ
 - prj
 - async
 
- 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 |