vue.js 프로젝트 cli 를 사용하지 않고 직접 구성하기

katanazero·2020년 11월 9일
0

vue

목록 보기
7/15

vue 프로젝트 생성

  • vue-cli 를 이용하여 생성하지 않고 프로젝트를 구성해보자.

준비

  1. node 프로젝트 생성
    npm init -y
    npm init 명령어를 이용하여 package.json 을 생성
  1. 필요한 모듈 설치
    npm i -S vue
    npm i -D @babel/core @babel/preset-env
    npm i -D webpack-cli webpack webpack-devserver html-webpack-plugin mini-css-extract-plugin
    npm i -D babel-loader css-loader vue-loader vue-template-compiler
    npm i -D node-sass sass-loader
  1. webpack.config.js 작성
// webpack.config.js
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCSSExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
    mode: "development",
    entry: "./src/main.js",
    output: {
        filename: 'bundle.js',
        path: path.join(__dirname, '/dist')
    },
    module: {
        rules: [
            {
                test: /\.vue$/,
                use : {
                    loader: 'vue-loader',
                    options: {
                    }
                }
            },
            {
                test: /\.js$/,
                exclude: /(node_modules)/,
                use: {
                    loader: 'babel-loader',
                    options: {
                        presets: ["@babel/env", {}]
                    }
                }
            },
            {
                test: /\.(css|scss)$/,
                use: [
                    'vue-style-loader',
                    MiniCSSExtractPlugin.loader,
                    'css-loader',
                    'sass-loader',
                ]
            }
        ]
    },
    resolve: {
        alias: {
            "vue$": "vue/dist/vue.esm.js"
        },
        extensions: ['*', '.js', '.vue', '.json', '.wasm', '.ts', '.tsx', '.mjs', '.cjs']
    },
    plugins: [
        new VueLoaderPlugin(),
        new MiniCSSExtractPlugin({
            filename: "index.css"
        }),
        new HtmlWebpackPlugin({
            template: path.join(__dirname, '/src/index.html'),
            inject: true,
            filename: 'index.html'
        }),
    ],

    devServer: {
        contentBase: path.join(__dirname, 'dist'),
        inline: true,
        hot: true,
        host: "localhost",
        port: 5000
    }
}

  1. package.json scripts 작성
    "build": "webpack --mode=production",
    "dev": "webpack-dev-server --open"
  1. /src/main.js 작성 (webpack entry 파일)
import Vue from 'vue';
import App from './App';

new Vue({
    el: '#app',
    components: {App},
    template: '<App/>'
});

  1. /src/index.html 작성
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>안녕 나는 뷰를 수동으로 구성해봤엉!!!</title>
</head>
<body>
    <div id="app">

    </div>
</body>
</html>
profile
developer life started : 2016.06.07 ~ 흔한 Front-end 개발자

0개의 댓글