webpack

webpack 설치 & 기본 명령어 정리

foglove 2019. 8. 26. 15:32

명령어

- npm i webpack-manifest-plugin(패키즈명) --save-dev(현재 개발 서버에만 사용한다.)

 

install --save vs --save-dev 

  • --save는 앱이 구동하기 위해 필요한 모듈&라이브러리 설치 ex) react,vue 
  • --save-dev 는 앱 개발시에 필요한 모듈&라이브러리 설치 ex)test,build tool,live reloading 

 

 

 

1. node 설치 url : https://nodejs.org/en/

2. 터미널 cmd 창을 켜서 cd |원하는 경로| 에 들어 가서  npm i webpack 명령어를 치고 엔터 치면 자동으로 설치된다.

글로벌로 설치 하고 싶다면 npm i webpack -g 맨뒤에 -g 옵션을 붙이면 글로벌로 설치됨.

3.npm init -y 사용 하게 되면 package.json 파일이 생성 되고 기본적인 옵션 으로 셋팅 된다.

4. index.html 기본 파일을 만들고  

ex) 

<html>
  <head>
    <title>Webpack Plugins</title>
  </head>
  <body>
    <script src="dist/bundle.js"></script>
  </body>
</html>

를 넣어 준다.

5. index.js 파일을 생성 해주고 

ex) 

var $ = require('jquery');
console.log("loaded jQuery version is " + $.fn.jquery);


index.js 에 위에 내용을 넣어준다.

6. 상위 폴더 밑에 webpack.config.js 를 생성 후 

var path = require('path');
var webpack = require('webpack');

module.exports = {
  //1개의 파일로 생성 하고 싶을때
  entry: './app/index.js', //현재 있는 파일으로 webpack 돌린다.
  //다중 파일로 생성 하고 싶을떄 
  entry: {
    main: './app/index.js',
    vendor: [
      'moment',
      'lodash'
    ]
  },
  module: { 
    rules: [{
      test: /\.js$/,  //js 파일 전체
      exclude: 'node_modules', 
      use: {
        loader: 'babel-loader', //바멜 로더를 통해 es6 -> es5 변환
        options: {
          presets: ['env']
        }
      }
    }]
  },
  //1개의 고정 파일로 생성 하고 싶을떄
  output: {
    filename: 'bundle.js', //webpack을 다돌리고 bundle.js 생성
    path: path.resolve(__dirname, 'dist') //bundle.js 생성 될 디렉토리를 잡아준다.
  },
  //다중 파일로 생성 하고 싶을떄
  output: {
    filename: '[name].js', //entry에 선언된 main,vendor 이름으로 각각 생성 된다.
    path: path.resolve(__dirname, 'dist') 
    //resolve: 왼쪽에서 오른쪽으로 파일 생성 디렉토리 설정
	//join: 왼쪽에서 오른쪽으로 파일 디렉토리 설정
  }
  externals: { // webpack 시 제외 시킨다. 
    jquery: 'jQuery'
  },
  resolve: {// 모듈간의 의존성 고려하여 모듈을 로딩한다. 즉 모듈을 어떻게 로딩해오느냐?관점
    alias: { //별칭 짓기
      Vendor: path.resolve(__dirname, './app/vendor/') // import 할때 /app/vendor/ 대신 Vendor로
      사용이 가능 하다.
    }
  },
  plugins: [ //webpack 플러그인을 사용 하고 싶을떄 
    new webpack.ProvidePlugin({ //import 각각 할 필요 없이 전체 로딩이 필요시 넣어 준다.
      $: 'jquery'
    })
  ]
};

7. webpack 명령어를 실행 시킨다.