vue.config.js 文件配置

const path = require('path')
const webpack = require('webpack')
const createThemeColorReplacerPlugin = require('./config/plugin.config')
// const MonacoWebpackPlugin = require('monaco-editor-webpack-plugin')

function resolve (dir) {
  return path.join(__dirname, dir)
}

const isProd = process.env.NODE_ENV === 'production'
const isMicroService = isProd ? true : false  // 是否开启微服务 (默认develop开发环境不开启)
// const isMicroService = true
console.log('isProd => ', isProd)
console.log('isMicroService => ', isMicroService)

// 微服务需要多一级目录 /garnet  /basalt ...
const proxy = isMicroService ? {
  '/api': {
    target: process.env.VUE_APP_API_BASE_URL,
    ws: false,
    changeOrigin: true,
    pathRewrite: {
      '^/api': '' // 需要rewrite的,
    }
  }
} : {
  '/api/garnet': {
    target: process.env.VUE_APP_API_BASE_URL,
    ws: false,
    changeOrigin: true,
    pathRewrite: {
      '^/api/garnet': '' // 需要rewrite的,
    }
  },
  '/api/basalt': {
    target: process.env.VUE_APP_API_BASE_URL,
    ws: false,
    changeOrigin: true,
    pathRewrite: {
      '^/api/basalt': '' // 需要rewrite的,
    }
  },
  '/api/jasper': {
    target: process.env.VUE_APP_API_BASE_URL,
    ws: false,
    changeOrigin: true,
    pathRewrite: {
      '^/api/jasper': '' // 需要rewrite的,
    }
  }
}

const assetsCDN = {
  // webpack build externals
  externals: {
    vue: 'Vue',
    'vue-router': 'VueRouter',
    vuex: 'Vuex',
    axios: 'axios'
  },
  css: [],
  // https://unpkg.com/browse/vue@2.6.10/
  js: [
    '/static/js/vue.min.js',
    '/static/js/vue-router.min.js',
    '/static/js/vuex.min.js',
    '/static/js/axios.min.js'
  ]
}

// vue.config.js
const vueConfig = {
  configureWebpack: {
    // webpack plugins
    plugins: [
      // Ignore all locale files of moment.js
      new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/)
    ],
    // if prod, add externals
    externals: isProd ? assetsCDN.externals : {}
  },

  chainWebpack: (config) => {
    config.resolve.alias
      .set('@$', resolve('src'))
    /* config.plugin('monaco').use(new MonacoWebpackPlugin()) */
    // config.plugin('webpack-bundle-analyzer').use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin)
    const svgRule = config.module.rule('svg')
    svgRule.uses.clear()
    svgRule
      .oneOf('inline')
      .resourceQuery(/inline/)
      .use('vue-svg-icon-loader')
      .loader('vue-svg-icon-loader')
      .end()
      .end()
      .oneOf('external')
      .use('file-loader')
      .loader('file-loader')
      .options({
        name: 'assets/[name].[hash:8].[ext]'
      })
    config.module.rule('pug')
    .test(/\.pug$/)
    .use('pug-html-loader')
    .loader('pug-html-loader')
    .end()
    // if prod is on
    // assets require on cdn
    if (isProd) {
      config.plugin('html').tap(args => {
        args[0].cdn = assetsCDN
        return args
      })
    }
  },

  css: {
    loaderOptions: {
      less: {
        modifyVars: {
          'primary-color': '#245083',
          'layout-color': '#245083',
          'border-radius-base': '2px'
        },
        // DO NOT REMOVE THIS LINE
        javascriptEnabled: true
      }
    }
  },

  devServer: {
    disableHostCheck: true,
    host: process.env.VUE_PROXY_HOST,
    port: 8001,
    proxy
  },

  // disable source map in production
  productionSourceMap: false,
  lintOnSave: false,
  // babel-loader no-ignore node_modules/*
  transpileDependencies: []
}

// preview.pro.loacg.com only do not use in your production;
if (process.env.VUE_APP_PREVIEW === 'true') {
  // eslint-disable-next-line no-labels
  // runtimeCompiler: true,
  // add `ThemeColorReplacer` plugin to webpack plugins
  vueConfig.configureWebpack.plugins.push(createThemeColorReplacerPlugin())
}

module.exports = vueConfig

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js是用来配置Vue项目的配置文件。在Vue项目中,可以通过创建vue.config.js文件来进行一些特殊的webpack配置。在这个配置文件中,可以新增或修改webpack的plugins或rules。 这个配置文件是在Vue项目中的根目录下创建的,它会被@vue/cli-service自动加载。通过编辑这个配置文件,可以满足项目中的一些特殊需求,比如调整webpack的配置、添加额外的插件、修改构建规则等。所以,vue.config.js是一个非常重要的配置文件,可以帮助开发人员根据项目的需要进行自定义配置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue.config.js完整配置-超详细](https://download.csdn.net/download/digital_AI/87824264)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【Vuevue.config.js 的完整配置](https://blog.csdn.net/weixin_43094619/article/details/130220887)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值