jineecode

webpack 뜯어보기 본문

JS

webpack 뜯어보기

지니코딩 2021. 5. 28. 17:16

공식 사이트: https://webpack.js.org/

 

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

//npm init
//package.json

...

"scripts": {
	"dev": "webpack"
}

npm run dev

npx webpack

 

const path = require('path'); //node를 설치하면 경로 조작을 쉽게 할 수 있는 path를 준다.
const RefreshWebpackPlugin = require('@pmmmwh/react-refresh-webpack-plugin');

module.exports = {
  name: 'wordrelay', //웹팩 설정 이름
  mode: 'development', // 개발용 | 실서비스: production
  devtool: 'eval', // 개발용 | 실서비스: hidden-source-map
  resolve: {
    extensions: ['.js', '.jsx']
    //webpack이 확장자를 찾는다.
  },

  entry: {
    app: ['./client'],
    //웹팩으로서 합쳐줄 파일들을 배열로 app에 담음. 
    //client.jsx에서 import 되어있는 것까지 모두 합쳐준다.
    //확장자를 적어주기 귀찮으면 확장자를 생략하고 
    //resolve를 이용해 exteinsions에 확장자를 모아준다.
  }, // 입력
  module: {
    rules: [{ //여러개의 규칙
      test: /\.jsx?$/, //정규표현식. js파일과 jsx파일을 적용하겠다.
      loader: 'babel-loader', //바벨로
      options: { //바벨의 옵션
        presets: [
          ['@babel/preset-env', {
            targets: {
              browsers: ['> 1% in KR'], // browserslist
            },
            debug: true,
          }],
          '@babel/preset-react',
        ],
        plugins: [
          '@babel/plugin-proposal-class-properties',
          'react-refresh/babel',
        ],
      },
    }],
  },
  output: {
    path: path.join(__dirname, 'dist'), 
    //path.join: path를 알아서 합쳐줌. 현재 폴더 안에 들어있는 'dist'를 만듦
    filename: 'app.js',
    //파일 이름은 app.js 로
    publicPath: '/dist/',
  }, //출력
  devServer: {
    publicPath: '/dist/',
    hot: true
  },
};

entry 에 있는 파일을 읽어서 module을 적용한 후, output으로 뺀다.

 

'JS' 카테고리의 다른 글

chart.js  (0) 2021.06.23
웹 스토리지 (localStorage, sessionStorage) 사용법  (0) 2021.06.21
reduce 파헤치기  (0) 2021.05.21
&& 연산자로 if 역할 대신하기  (0) 2021.05.12
Javascript 정렬 함수  (0) 2021.04.29
Comments