| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| const path = require('path') |
| |
| // If your port is set to 80, |
| // use administrator privileges to execute the command line. |
| // For example, on Mac: sudo npm run / sudo yarn |
| const name = 'Dashboard for APISIX' // TODO: get this variable from setting.ts |
| |
| module.exports = { |
| publicPath: process.env.NODE_ENV === 'production' ? '/apisix/dashboard' : '/', |
| lintOnSave: process.env.NODE_ENV === 'development', |
| productionSourceMap: false, |
| devServer: { |
| // https://cli.vuejs.org/zh/config/#devserver-proxy |
| proxy: 'http://127.0.0.1:9080/apisix/admin/' |
| }, |
| pluginOptions: { |
| 'style-resources-loader': { |
| preProcessor: 'scss', |
| patterns: [ |
| path.resolve(__dirname, 'src/styles/_variables.scss'), |
| path.resolve(__dirname, 'src/styles/_mixins.scss') |
| ] |
| } |
| }, |
| chainWebpack(config) { |
| // provide the app's title in webpack's name field, so that |
| // it can be accessed in index.html to inject the correct title. |
| config.set('name', name) |
| |
| // https://webpack.js.org/configuration/devtool/#development |
| config |
| .when(process.env.NODE_ENV === 'development', |
| config => config.devtool('cheap-source-map') |
| ) |
| |
| config |
| .when(process.env.NODE_ENV !== 'development', |
| config => { |
| config |
| .optimization.splitChunks({ |
| chunks: 'all', |
| cacheGroups: { |
| libs: { |
| name: 'chunk-libs', |
| test: /[\\/]node_modules[\\/]/, |
| priority: 10, |
| chunks: 'initial' // only package third parties that are initially dependent |
| }, |
| elementUI: { |
| name: 'chunk-elementUI', // split elementUI into a single package |
| priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app |
| test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm |
| }, |
| commons: { |
| name: 'chunk-commons', |
| test: path.resolve(__dirname, 'src/components'), |
| minChunks: 3, // minimum common number |
| priority: 5, |
| reuseExistingChunk: true |
| } |
| } |
| }) |
| config.optimization.runtimeChunk('single') |
| } |
| ) |
| } |
| } |