美文网首页
Webpack4 Vue 基本配置

Webpack4 Vue 基本配置

作者: SpinachC | 来源:发表于2019-03-31 22:33 被阅读0次
    1. 上package.json
    "dependencies": {
        "vue": "^2.6.10"
      },
      "devDependencies": {
        "@babel/core": "^7.5.0",
        "@babel/plugin-syntax-dynamic-import": "^7.2.0",
        "@babel/preset-env": "^7.5.2",
        "babel-loader": "^8.0.6",
        "clean-webpack-plugin": "^3.0.0",
        "css-loader": "^3.0.0",
        "html-webpack-plugin": "^3.2.0",
        "mini-css-extract-plugin": "^0.7.0",
        "url-loader": "^2.0.1",
        "vue-loader": "^15.7.0",
        "vue-style-loader": "^4.1.2",
        "vue-template-compiler": "^2.6.10",
        "webpack": "^4.35.3",
        "webpack-cli": "^3.3.5",
        "webpack-dev-server": "^3.7.2",
        "webpack-merge": "^4.2.1"
      }
    
    1. webpack common
    const path = require('path');
    const VueLoaderPlugin = require('vue-loader/lib/plugin');
    const HtmlWebpackPlugin = require('html-webpack-plugin');
    const { CleanWebpackPlugin } = require("clean-webpack-plugin");
    
    module.exports = {
      entry: {
        app: './src/main.js'
      },
      output: {
        filename: '[name].[hash].bundle.js',
        path: path.join(__dirname, './dist')
      },
      module: {
        rules: [
          {
            test: /\.vue$/,
            use: ['vue-loader']
          },
          {
            test: /\.(png|jpg|gif)$/,
            use: [
              {
                loader: 'url-loader',
                options: {
                  limit: 8192  // 小于8192byte 打成base64
                }
              }
            ]
          },
          {
            test: /\.js$/,
            use: ['babel-loader'],
            exclude: /node_modules/
          }
        ]
      },
      plugins: [
        new HtmlWebpackPlugin({
          template: 'template.html',
          filename: 'index.html'
        }),
        new VueLoaderPlugin(),
        new CleanWebpackPlugin()
      ],
      resolve: {  //导入的时候不用写拓展名
        extensions: [' ', '.js', '.json', '.vue', '.scss', '.css']
      },
    }
    
    1. webpack dev
    const merge = require('webpack-merge');
    const common = require('./webpack.common.js');
    
    module.exports = merge(common, {
      mode: 'development',
      devtool: 'source-map',
      module: {
        rules: [
          {
            test: /\.css$/,
            use: ['vue-style-loader', 'css-loader']
          }
        ]
      },
      watchOptions: {
        ignored: /node_modules/,
        aggregateTimeout: 300, //300ms内重复保存不打包
        poll: 1000  //每秒询问的文件变更的次数
      },
      devServer: {
        inline: true,
        compress: true,
        host: '127.0.0.1',
        port: 2500,
        historyApiFallback: true
      }
    })
    
    1. webpack prod
    const merge = require('webpack-merge');
    const common = require('./webpack.common.js');
    const MiniCssExtractPlugin = require('mini-css-extract-plugin')
    
    module.exports = merge(common, {
      mode: 'production',
      module: {
        rules: [
          {
            test: /\.css$/,
            use: [
              {
                loader: MiniCssExtractPlugin.loader   //外链 css
              },
              'css-loader'
            ]
          }
        ]
      },
      plugins: [
        new MiniCssExtractPlugin({
          filename: 'style.css'
        })
      ]
    })
    
    1. .babelrc
    {
      "plugins": ["@babel/plugin-syntax-dynamic-import"],
      "presets": ["@babel/preset-env"]
    }
    

    相关文章

      网友评论

          本文标题:Webpack4 Vue 基本配置

          本文链接:https://www.haomeiwen.com/subject/cqaqbqtx.html