• webpack 构建 vue 开发环境


    1. 必要环境 请确保已安装 

    node npm webpack

    2.创建一个test文件夹 

    mkdir test && cd test && npm init 
    

    3. 创建 webpack.dev.config.js

    const path = require('path')
    const {CleanWebpackPlugin} = require('clean-webpack-plugin') // webpack插件 清除打包文件夹下多余文件 详细配置==>(https://www.npmjs.com/package/clean-webpack-plugin)
    const HtmlWebpackPlugin = require('html-webpack-plugin') // webpack插件    简化html创建 详细配置==>(https://github.com/jantimon/html-webpack-plugin)
    const VueLoaderPlugin = require('vue-loader/lib/plugin') // vue-loader 插件,它的职责是将你定义过的其它规则复制并应用到 .vue 文件里相应语言的块
    const webpack = require('webpack')
    module.exports = {
        entry: {
            app: './main.js'
        },
        devtool: 'cheap-module-eval-source-map', // 控制如何生成 source map ==>(https://www.webpackjs.com/configuration/devtool/)
        devServer: {
            contentBase: './dist',
            hot: true
        },
        mode: 'development',
        module: { 
            rules: [
                {
                    test: /.(svg)(?.*)?$/,
                    use: ['file-loader']
                }, {
                test: /.css$/,
                use: ['style-loader', 'css-loader'],
            }, {
                test: /.vue$/,
                use: ['vue-loader']
            }, {
                test: /.(png|jpg|jpeg|gif)$/,
                use: [{
                    loader: 'url-loader',
                    options: {
                        limit: 10000,
                        name: '[name].[ext]',
                        outputPath: 'assets/img',
                        publicPath: ''
                    }
                }]
            }, {
                test: /.js$/,
                use: [{
                    loader: 'babel-loader',
                    options: {
                        presets: ['react', 'env']
                    }
                }],
                include: [
                    path.resolve(__dirname, 'src')
                ]
            }, {
                test: /.(woff|woff2|eot|ttf|otf)$/,
                use: ['url-loader']
            }]
        },
        plugins: [ // 插件配置
            new CleanWebpackPlugin(),
            new HtmlWebpackPlugin({
                template: './src/index.html',
                filename: 'index.html'
            }),
            new VueLoaderPlugin(),
            new webpack.NamedModulesPlugin(),
            new webpack.HotModuleReplacementPlugin()
        ],
        output: {
            filename: '[name].js',
            path: path.resolve(__dirname, 'dist')
        },
        resolve: {
            alias: {
                'vue$': 'vue/dist/vue.esm.js',
                '@': 'src'
            }
        }
    }
    

     4.  package.json 

    {
      "name": "test",
      "version": "1.0.0",
      "description": "",
      "main": "index.js",
      "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "start": "webpack-dev-server --config webpack.dev.config.js"
      },
      "author": "",
      "license": "ISC",
      "devDependencies": {
        "babel-core": "^6.26.3",
        "babel-loader": "^8.2.2",
        "babel-plugin-transform-runtime": "^6.23.0",
        "babel-preset-es2015": "^6.24.1",
        "babel-preset-stage-0": "^6.24.1",
        "babel-runtime": "^6.26.0",
        "css-loader": "^5.2.4",
        "style-loader": "^2.0.0",
        "vue-hot-reload-api": "^2.3.4",
        "vue-html-loader": "^1.2.4",
        "vue-loader": "^15.7.0",
        "vue-style-loader": "^4.1.3",
        "vue-template-compiler": "^2.6.12",
        "webpack": "^4.29.6",
        "webpack-dev-server": "^3.11.2",
        "webpack-cli": "^3.2.3",
        "clean-webpack-plugin": "^4.0.0-alpha.0",
        "html-webpack-plugin": "^3.2.0",
        "url-loader": "^1.1.2",
        "file-loader": "^3.0.1"
      },
      "dependencies": {
        "iview": "^3.5.4",
        "view-design": "^4.5.0",
        "vue": "^2.6.12"
      }
    }
    

      

     4 创建main.js

    import Vue from 'vue'
    import App from './App.vue'
    import ViewUI from 'view-design';
    import 'view-design/dist/styles/iview.css';
    Vue.use(ViewUI);
    new Vue({
        el: '#app',
        components: {App},
        template: '<App />'
    })
    

     5. 创建App.vue

    <template>
      <Button>hell vue111222</Button>
    </template>
    
    <script>
    import {Button} from "iview";
    export default {
      components:{
        Button
      },
      data() {
        return {
          btnName: "default",
        }
      },
      mounted() {
    
      }
    }
    </script>
    
    <style lang="css" scoped>
        /**
         * You can change the "lang" to use sass, scss, or even more.
         */
    </style>
    

     6. 创建 index.html

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport"
              content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>VueJS</title>
    </head>
    <body>
        <div id="app"></div>
    </body>
    </html>
    

     7. 执行 命令: npm run start

  • 相关阅读:
    vue.js报错:Module build failed: Error: No parser and no file path given, couldn't infer a parser.
    安装node
    java四大特性理解(封装继承多态抽象)
    在成功道路上,你要百败百战
    职场观察:高薪需要什么?
    jBPM4工作流应用开发指南
    WebService技术简介
    如何获得Android设备名称(ADB命令详细介绍)
    how-to-fix-fs-re-evaluating-native-module-sources-is-not-supported-graceful
    QQ文件没有读取权限,60017导致QQ无法登陆的终极解决办法
  • 原文地址:https://www.cnblogs.com/412013cl/p/14752466.html
Copyright © 2020-2023  润新知