이번에는 webpack을 통해 만들었던 템플릿을 활용하여 Vue.js 개발환경을 설정해보도록 하겠습니다. GitHub에 있는 webpack-template을 참고 부탁드립니다.
$ cd Desktop
$ npx degit orosy/webpack-template-basic vue3-webpack-template
$ cd vue3-webpack-template
$ code . -r
원격저장소에 있는 템플릿을 바탕화면에 vue3-webpack-template
라는 폴더를 만들어 VS Code로 가져오도록 하겠습니다.
프로젝트 루트 경로에 src 폴더를 생성합니다. 또한, 루트 경로에 있는 js 폴더는 삭제해줍니다.
src 폴더 내에 main.js
, App.vue
파일을 만들어줍니다.
$ npm i vue@next
Vue.js 최신의 3버전을 설치하기 위해 vue@next
라는 명령어를 입력해줍니다. 또한, 개발 환경뿐만 아니라 브라우저에서 동작시킬 수 있도록 해야하므로 개발 의존성이 아닌 일반 의존성으로 설치합니다.
$ npm i -D vue-loader@next vue-style-loader '@vue/compiler-sfc'
.vue
확장자의 파일을 프로젝트에서 실제로 관리하려면 추가적인 webpack과 관련된 패키지를 설치해야 합니다.
총 3가지를 개발 의존성으로 설치하며, 이중 @vue/compiler-sfc
는 Vue.js 파일을 브라우저에서 동작할 수 있도록 변환하는 역할을 합니다.
const { VueLoaderPlugin } = require('vue-loader')
module.exports = {
entry: './src/main.js',
module: {
rules: [
{
test: /\.vue$/, // .vue로 끝나는 파일 검색
use: 'vue-loader' // vue-loader 연결
},
{
test: /\.s?css$/,
use: [
'vue-style-loader',
'style-loader',
'css-loader',
'postcss-loader',
'sass-loader'
]
}
]
}
plugins: [
new VueLoaderPlugin()
]
}
webpack.config.js
의 구성 옵션을 수정하겠습니다. 템플릿 내용에서 Vue.js를 활용하기 위해 필요한 부분만 수정하시면 됩니다.
실제로 App.vue
파일을 통해 원활히 프로젝트가 진행되는지 테스트를 진행해보겠습니다.
<template>
<h1>{{ message }}</h1>
</template>
<script>
export default {
data() {
return {
message: 'Hello Vue!!!'
}
}
}
</script>
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
<body>
<div id='app'></div>
</body>
페이지에 Hello Vue!!!
가 정상적으로 출력되면 완성입니다.
이번에는 .js
, .vue
확장자 없이도 import할 수 있도록 프로젝트 환경을 설정해봅시다.
module.exports = {
resolve: {
extensions: ['.js', '.vue']
}
}
import App from './App'
App.vue
파일에 연결한 여러 컴포넌트를 만들어보도록 하겠습니다.
src 폴더 내에 components 폴더를 생성합니다.
테스트를 위해 components 폴더에 HelloWolrd.vue
파일을 생성해줍니다.
static 폴더에 있던 images 폴더를 src로 이동하고 이름을 assets로 변경해줍니다.
<template>
<img src="~assets/logo.png" alt="orosy">
</template>
HelloWolrd.vue
에 위와 같이 코딩을 해줍니다.
.vue
확장자 파일에서 이미지를 사용하고 경로를 명시하기 위해서 추가적인 webpack의 셋팅이 필요합니다.
$ npm i -D file-loader // 특정한 파일을 읽어 브라우저에 출력
module.exports = {
resolve: {
// 경로 별칭
alias: {
'~': path.resolve(__dirname, 'src'),
'assets': path.resolve(__dirname, 'src/assets')
},
rules: {
test: /\.(png|jpe?g|gif|webp)$/,
use: 'file-loader'
}
}
구성 옵션을 작성하여 이미지 파일을 사용할 수 있도록 합니다.
<template>
<HelloWorld />
</template>
<script>
import HelloWorld from '~/components/HelloWorld'
export default {
components: {
HelloWorld
}
}
</script>
App.vue
파일에 코딩을 진행하고 개발 서버를 열었을 때, 이미지가 잘 출력되면 완성입니다.