zoukankan      html  css  js  c++  java
  • webpack learn1-webpack-dev-server的配置和使用3

    首先输入命令来安装webpack-dev-server

    npm i webpack-dev-server

    在package.json文件中添加代码:

    "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "build": "webpack --config webpack.config.js --mode development",
        "dev": "webpack-dev-server --config webpack.config.js"
      },

    输入命令:

    npm i cross-env

    修改package.json文件其中的"scripts"

    "scripts": {
        "test": "echo "Error: no test specified" && exit 1",
        "build": "cross-env NODE_ENV=production webpack --config webpack.config.js",
        "dev": "cross-env NODE_ENV=development webpack-dev-server --config webpack.config.js"
      },

    在webpack.config.js中添加target: 'web' 和最下面添加判断条件

    const path = require('path')
    
    const VueLoaderPlugin = require('vue-loader/lib/plugin')
    
    const isDev = process.env.NODE_ENV === 'development'
    
    const config = {
      target: 'web',
      entry: path.join(__dirname,'src/index.js'),
      output: {
        filename: 'bundle.js',
        path: path.join(__dirname,'dist')
      },
      module: {
        rules: [
          {
            test: /.vue$/,
            loader: 'vue-loader'
          },{
            test:/.css$/,
            use: [
              'style-loader',
              'css-loader'
            ]
          },{
            test: /.styl/,
            use: [
              'style-loader',
              'css-loader',
              'stylus-loader'
            ]
          },{
            test:/.(jpg|svg|jpeg|png|gif)$/,
            use: [
              {
                loader: 'url-loader',
                options: {
                  limit: 1024,
                  name: '[name]-aa.[ext]'
                }
              }
            ]
          }
        ]
      },
      plugins:[
          new VueLoaderPlugin()
      ]
    }
    
    if(isDev) {
      config.devServer = {
        port: 8000,
        host: '0.0.0.0',
        overlay: {
          errors: true
        }
      }
    }
    
    module.exports = config
    View Code

    其中设置host='0.0.0.0'好处是:既可以通过127.0.0.1访问,也可以通过ip进行访问,这样在别的电脑就可以访问本机.

    overlay: true是为了,如果vue有错误可以显示在网页上,可以看到webpack编译过程中出现的错误

    输入命令安装html-webpack-plugin

    npm i html-webpack-plugin

    再次修改webpack.config.js文件:

    const path = require('path')
    
    const VueLoaderPlugin = require('vue-loader/lib/plugin')
      const webpack = require('webpack')
    
    
    const isDev = process.env.NODE_ENV === 'development'
    
    const HTMLPlugin =require('html-webpack-plugin')
    
    const config = {
      target: 'web',
      entry: path.join(__dirname,'src/index.js'),
      output: {
        filename: 'bundle.js',
        path: path.join(__dirname,'dist')
      },
      module: {
        rules: [
          {
            test: /.vue$/,
            loader: 'vue-loader'
          },{
            test:/.css$/,
            use: [
              'style-loader',
              'css-loader'
            ]
          },{
            test: /.styl/,
            use: [
              'style-loader',
              'css-loader',
              'stylus-loader'
            ]
          },{
            test:/.(jpg|svg|jpeg|png|gif)$/,
            use: [
              {
                loader: 'url-loader',
                options: {
                  limit: 1024,
                  name: '[name]-aa.[ext]'
                }
              }
            ]
          }
        ]
      },
      plugins:[
          new VueLoaderPlugin(),
          new webpack.DefinePlugin({
            'process.env': {
              NODE_ENV: isDev ? '"development"' : '"production"'
            }
          }),
          new HTMLPlugin()
      ]
    }
    
    if(isDev) {
      config.devServer = {
        port: 8000,
        host: '0.0.0.0',
        overlay: {
          errors: true
        }
      }
    }
    
    module.exports = config

     最后输入命令

    npm run dev

    打开浏览器输入 localhost:8000

    实现热加载功能:修改数据,只是重新渲染修改的组件 修改webpack.config.js文件:

    const path = require('path')
    
    const VueLoaderPlugin = require('vue-loader/lib/plugin')
    
    const HTMLPlugin = require('html-webpack-plugin')
    const webpack = require('webpack')
    const isDev = process.env.NODE_ENV === 'development'
    
    const config = {
      target: 'web',
      entry: path.join(__dirname,'src/index.js'),
      output: {
        filename: 'bundle.js',
        path: path.join(__dirname,'dist')
      },
      module: {
        rules: [
          {
            test: /.vue$/,
            loader: 'vue-loader'
          },{
            test:/.css$/,
            use: [
              'style-loader',
              'css-loader'
            ]
          },{
            test: /.styl/,
            use: [
              'style-loader',
              'css-loader',
              'stylus-loader'
            ]
          },{
            test:/.(jpg|svg|jpeg|png|gif)$/,
            use: [
              {
                loader: 'url-loader',
                options: {
                  limit: 1024,
                  name: '[name]-aa.[ext]'
                }
              }
            ]
          }
        ]
      },
      plugins:[
          new VueLoaderPlugin(),
          new webpack.DefinePlugin({
            'process.env': {
              NODE_ENV: isDev ? '"development"' : '"production"'
            }
          }),
          new HTMLPlugin()
      ]
    }
    
    if(isDev) {
      // 帮助调试代码
      config.devtool = '#cheap-module-eval-source-map'
      config.devServer = {
        port: 8000,
        host: '0.0.0.0',
        overlay: {
          errors: true
        },
        // 热加载功能:只渲染修改的组件,不会刷新页面
        hot: true
        //open: true 改配置后就自动打开浏览器
      }
      config.plugins.push(
        new webpack.HotModuleReplacementPlugin(),
        new webpack.NoEmitOnErrorsPlugin()
      )
    }
    
    module.exports = config
    View Code

     需要重新输入命令

    npm run dev

    刷新页面后可以看效果

  • 相关阅读:
    2015/12/14 Python网络编程,TCP/IP客户端和服务器初探
    2015/12/12 考了PAT,又回来玩Python了。
    2015/11/9用Python写游戏,pygame入门(8):按钮和游戏结束
    2015/11/7用Python写游戏,pygame入门(7):碰撞检测
    2015/11/6用Python写游戏,pygame入门(6):控制大量的对象
    2015/11/5用Python写游戏,pygame入门(5):面向对象的游戏设计
    2015/11/4用Python写游戏,pygame入门(4):获取鼠标的位置及运动
    联奕公司奕报告集成数据库权限分配
    分享泛微公司OA系统用于二次开发的sql脚本
    (项目积累的)SQL数据库点滴
  • 原文地址:https://www.cnblogs.com/init-007/p/10896947.html
Copyright © 2011-2022 走看看