vue.config.js

const pxtoviewport = require('postcss-px-to-viewport')
const path = require('path')
function resolve(dir) {
  return path.join(__dirname, dir)
}
const Timestamp = new Date().getTime() // 当前时间为了防止打包缓存不刷新,所以给每个js文件都加一个时间戳
module.exports = {
  outputDir: process.env.outputDir,
  publicPath: '/',
  lintOnSave: 'warning',
  productionSourceMap: false, // 不在production环境使用SourceMap
  devServer: {
    open: true,
    proxy: {
      '/api': {
        target: process.env.VUE_APP_TARGET_API, // 目标 API 地址
        changOrigin: true, // 跨域配置
        pathRewrite: {
          '^/api': '/'
        }
      }
    },
    overlay: {
      warnings: false,
      errors: true
    }

  },
  chainWebpack(config) {
    config.resolve.alias
      .set('@', resolve('src'))
  },
  configureWebpack: {
    output: { // 输出重构  打包编译后的 文件名称  【模块名称.版本号.时间戳】
      filename: `[name].${process.env.VUE_APP_Version}.${Timestamp}.js`,
      chunkFilename: `[name].${process.env.VUE_APP_Version}.${Timestamp}.js`
    }
  },
  css: {
    loaderOptions: {
      postcss: {
        plugins: [
          pxtoviewport({
            viewportWidth: 375, // 视窗的宽度,对应的是我们设计稿的宽度,一般是750
            // viewportHeight: 1334, // 视窗的高度,根据750设备的宽度来指定,一般指定1334,也可以不配置
            unitPrecision: 3,
            // 指定`px`转换为视窗单位值的小数位数
            viewportUnit: 'vw', // 指定需要转换成的视窗单位,建议使用vw
            selectorBlackList: ['.van'], // 指定不转换为视窗单位的类,可以自定义,可以无限添加,建议定义一至两个通用的类名
            minPixelValue: 1, // 小于或等于`1px`不转换为视窗单位,你也可以设置为你想要的值
            mediaQuery: false // 允许在媒体查询中转换`px`
          })
        ]
      },
      scss: {
        prependData: `@import "~@/styles/variables.scss";@import "~@/styles/mixin.scss";`
      }
    }
  }
}
原文地址:https://www.cnblogs.com/-youth/p/13408175.html