728x90

사실 webpack을 처음 다루게 된 계기는 vuejs 때문이었다.


vuejs의 promise는 ECMAScript 6 버전부터 제공되는 것으로, IE 계열의 브라우저에서는 버전에 상관없이 작동하지 않는다.


역시 브라우저계의 이단아..


이걸 해결해보려고 stackoverflow를 허구헌날 뒤적일때 공통적으로 등장하는 단어가 바로 webpack과 babel이었다.


webpack으로 js를 번들링 할 때 babel loader를 거치게 하면 하위버전의 ECMAScript로 자동변환 할 수 있다는 얘기.


babel에 대한 자세한 소개는 이곳에 있다: https://gist.github.com/preco21/dddab805401458d5d538


우선 필요한 패키지를 설치 해 준다.


1
public$ npm i -S babel-core babel-loader babel-polyfill babel-preset-env es6-promise
cs


설마 3편까지 읽으면서 맨 앞의 "public$ " 부분이 프롬프트인걸 모르진 않겠지..


npm은 composer와는 달리 설치 과정이 무척 시끄럽다.


화면에 뭐가 한참씩 뜨고나서야 설치가 완료된다.


이제 다시 webpack.config.js 파일을 다룰 차례가 되었다.


babel은 로더, es6-promise는 플러그인으로 쓰게 된다.

 

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
32
33
34
35
36
// webpack.config.js
const path = require('path');
const webpack = require('webpack');
 
module.exports = {
    entry: {
        common: "./js/common.js",
        list: "./js/list.js",
        view: "./js/view.js",
    },
    output: {
        path: path.join(__dirname, 'dist'),
        publicPath: "/dist/",
        filename: '[name].build.js'
    },   
    resolve: {
        extensions: ['js''json'],        
        modules: [
            'js',
            'node_modules'
        ]    
    },
    plugins: [
            new webpack.ProvidePlugin({            
                Promise: 'es6-promise'
            }),        
    ],
    module: {
        loaders: [
            {
                test: /\.js$/,
                loader: 'babel-loader?presets[]=env'
            },
        ],
    }
};
cs


babel-loader는 module.loaders 배열에,


es6-promise는 plugins 배열에 추가 해 주었다.


다시 webpack 커맨드를 통해 js 파일들을 빌드 해 주자.


vuejs에서 쓰이는 <template> 태그를 제외하면 ES6으로 작성한 js들이 IE에서도 훌륭하게 동작하는것을 확인할 수 있다.





  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기