webpack及vue框架配置

前端笔记

# 1. vue.config 部分配置说明

const { merge } = require('webpack-merge')
module.exports = {
  outputDir: 'dist',//打包的文件夹名
  publicPath: process.env.NODE_ENV === 'production' ? '' : '/',//静态资源路径
  // 如果你不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建。
  productionSourceMap: false,
  lintOnSave: false,
  // 如果这个值是一个对象,则会通过 webpack-merge 合并到最终的配置中。
  // 如果这个值是一个函数,则会接收被解析的配置作为参数。该函数及可以修改配置并不返回任何东西,也可以返回一个被克隆或合并过的配置版本。
  configureWebpack: {
    module: {
      unknownContextCritical: false
    },
    // 外部扩展
    externals: {
      BMap: 'BMap',
      BMapLib: 'BMapLib',
      locationAPI: 'locationAPI',
    },
    // 代理
    devServer: {
      proxy: {
        '/ctaWebApi': {
          target: 'https://www.ctexcel.us/usctexcelxff/ctaWebApi/',
          changeOrigin: true,
          pathRewrite: {
            '^/ctaWebApi': ''
          }
        },
        '/activeApi': {
          // target: 'https://www.ctexcel.us/usctexcelxff/talos/',
          target: 'https://www.ctexcel.us/usctexcelxff/talos/',
          changeOrigin: true,
          pathRewrite: {
            '^/activeApi': ''
          }
        },
      }
    },
    resolve: {
      alias: {
        vue$: 'vue/dist/vue.esm.js'
      }
    },
    performance: {
      hints: false //去掉该死的警告!!!!!
    }
  },
  chainWebpack: config => {
    config.module
      .rule('images')
      .use('url-loader')
      .loader('url-loader')
      .tap(options => {
        return merge(options, {
          esModule: false
        })
      })
  }
}

# 2. 根据环境不同使用不同的配置,如接口地址

  • 修改 package.json 中的命令。 在不同环境时加上 --mode xxx,可以使当前环境 env 改变。默认 serve 为 development,build 为 production
"scripts": {
    "serve": "vue-cli-service serve --open",
    "build": "vue-cli-service build",
    "build_test": "vue-cli-service --mode test build",
    "lint": "vue-cli-service lint"
  },
  • 在项目中使用 process.env.NODE_ENV 获取当前环境
  • 添加配置文件
    let API_CONFIG = {
      development: {
        LocationAPI: 'https://www.ctexcel.us/usctexcelxff/talos'
      },
      test: {
        LocationAPI: 'https://www.ctexcel.us/usctexcelxff/talos'
      },
      production: {
        LocationAPI: 'https://www.ctexcel.us/helios'
      }
    }
    export default API_CONFIG[process.env.NODE_ENV]
    
  • 使用时
    import { LocationAPI } from '@/productConfig.js'
    
vue源码学习

vue源码学习

前端笔记

前端笔记