본문 바로가기
Front-End (web)

[Vue.js/Webpack] vue-html-webpack-plugin으로 임시 html 만들기

by 햄과함께 2018. 12. 17.
320x100

<!-- index.html -->
<!doctype html>
<html>
<head></head>
 
<body>
    <div id="app"></div>
</body>
<script src="./dist/build.js"></script>
 
</html>
cs


웹팩 빌드 결과물을 확인하기 위해 index.html 이란 파일을 만들어서 빌드된 결과물을 코드로 직접 작성했다.

이런 html 파일을 만들지 않고 결과물을 확인할 수 있게 해주는 플러그인이 htmlWebpackPlugin 이다.


위와 같이 직접 작성한 index.html 파일을 플러그인이 만들어준다.


index.html 파일은 삭제해준다.


npm install --save-dev vue-html-webpack-plugin

의존성 추가.


// webpack.config.js
 
const HtmlWebpackPlugin = require('vue-html-webpack-plugin');
 
module.exports = {
    //...
    plugins: [    
        new HtmlWebpackPlugin({
              vue: true
        })
    ]
}
cs


plugin 추가. 

vue를 true로 해준다.


$ npm run dev
cs

dev server를 실행해보면


기존과 같은 화면이 나온다.


$ npm run build
cs

로 실제로 나오는 dist/index.html 파일을 확인해보자.


// dist/index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Webpack App</title>
  </head>
  <body>
  <div id="app"></div><script type="text/javascript" src="build.js"></script></body>
</html>
cs

html-webpack-plugin을 처음에 사용했었는데 이걸 사용하면 app을 id로 하는 엘리먼트가 없어서 "cannot get / " 에러를 뱉는다.

vue-html-webpack-plugin을 사용하면 이 에러를 방지할 수 있다.


조금 더 상세히 보자면 위는 /node_modules/vue-html-webpack-plugin/index.js 의 일부이다.

만약 vue option이 true라면 <div id="app">을 추가한다. 


div 태그의 id가 "app"으로 되어있으므로 src/index.ts 파일의 Vue el옵션은 "#app"이어야 한다.

vue-html-sebpack-plugin에서 html 생성시 div id를 변경해주는 옵션이 있는지는 더 찾아봐야 알 것 같다.


참고 : https://www.npmjs.com/package/vue-html-webpack-plugin?activeTab=readme


참고 깃허브 : add 'vue-html-webpack-plugin'

320x100

'Front-End (web)' 카테고리의 다른 글

[Typescript] 얕은 복사  (0) 2019.07.24
[Typescript] openAPI 문서 모델을 typescript interface로 전환하기  (0) 2019.07.20
[Vue.js / Vuex] 전역상수  (0) 2018.12.03
jsp -> vueJs 전환 기록  (0) 2018.11.06
[Vue] 상수 사용  (0) 2018.11.01

댓글