const path = require('path') const webpack = require('webpack') const CompressionWebpackPlugin = require('compression-webpack-plugin') const GenerateAssetPlugin = require('generate-asset-webpack-plugin') const Timestamp = new Date().getTime() const createServerConfig = function (compilation) { let config = { version: new Date().getTime() } return JSON.stringify(config) } const resolve = dir => { return path.join(__dirname, dir) } // 项目部署基础 // 默认情况下,我们假设你的应用将被部署在域的根目录下, // 例如:https://www.my-app.com/ // 默认:'/' // 如果您的应用程序部署在子路径中,则需要在这指定子路径 // 例如:https://www.foobar.com/my-app/ // 需要将它改为'/my-app/' // iview-admin线上演示打包路径: https://file.iviewui.com/admin-dist/ const BASE_URL = process.env.NODE_ENV === 'production' ? '/' : '/'; const ip = 'http://36.134.91.96:10001/api' //const ip = 'https://cfm.bytesail.cn/api' const ip2 = 'http://120.79.80.64:8050' module.exports = { devServer: { port: "8081", //代理端口 open: false, //项目启动时是否自动打开浏览器,我这里设置为false,不打开,true表示打开 headers: { 'Access-Control-Allow-Origin': '*', }, proxy: { '/cloudApi': { target: ip2, ws: true, pathRewrite: { '^/api': '/' } }, '/api': { //本地服务接口地址 target: ip, //远程演示服务地址,可用于直接启动项目 //target: 'https://saber.bladex.vip/api', ws: true, pathRewrite: { '^/api': '/' } }, } }, // Project deployment base // By default we assume your app will be deployed at the root of a domain, // e.g. https://www.my-app.com/ // If your app is deployed at a sub-path, you will need to specify that // sub-path here. For example, if your app is deployed at // https://www.foobar.com/my-app/ // then change this to '/my-app/' publicPath: BASE_URL, // tweak internal webpack configuration. // see https://github.com/vuejs/vue-cli/blob/dev/docs/webpack.md // 如果你不需要使用eslint,把lintOnSave设为false即可 lintOnSave: true, chainWebpack: config => { config.resolve.alias .set('@', resolve('src')) // key,value自行定义,比如.set('@@', resolve('src/components')) .set('_c', resolve('src/components')) }, // 设为false打包时不生成.map文件 productionSourceMap: false, configureWebpack: config => { // 开发环境不需要gzip 生产环境时清空所有console if (process.env.NODE_ENV !== 'production') return else config.optimization.minimizer[0].options.terserOptions.compress.drop_console = true config.plugins.push( new CompressionWebpackPlugin({ // 正在匹配需要压缩的文件后缀 test: /\.(js|css|svg|woff|ttf|json|html)$/, // 大于10kb的会压缩 threshold: 10240 // 其余配置查看compression-webpack-plugin }) ) config.plugins.push( new GenerateAssetPlugin({ filename: 'version.json', fn: (compilation, cb) => { cb(null, createServerConfig(compilation)) }, extraFiles: [] }) ) config.plugins.push( new webpack.ProvidePlugin({ $: 'jquery', jQuery: 'jquery', 'window.jQuery': 'jquery' }) ) config.output.filename = `js/[name].${Timestamp}.js` config.output.chunkFilename = `js/[name].${Timestamp}.js` } // 这里写你调用接口的基础路径,来解决跨域,如果设置了代理,那你本地开发环境的axios的baseUrl要写为 '' ,即空字符串 // devServer: { // proxy: 'localhost:3000' // } }