配置生产环境和测试环境(配置文件修改后一定要重启项目)

一、vue2

1.建立config文件夹,下面有index.js,prod.env.js
在index.js中的proxyTable: {}中配置

'/api': {
        target: 'http://xxxxxxx', //开发环境,设置调用接口域名和端口号别忘了加http
        changeOrigin: true,  //如果设置成true:发送请求头中host会设置成target(是否跨域)
        ws: false,        //如果要代理 websockets,配置这个参数
        secure: false,  // 如果是https接口,需要配置这个参数
        pathRewrite: {
          '^/api': '/' //这里理解成用‘/api’代替target里面的地址,组件中我们调接口时直接用/api代替
          // 比如我要调用'http://0.0.0.0:3000/user/add',直接写‘/api/user/add’即可 代理后地址栏显示/
        }
      }

二、vue3

const path = require("path");
module.exports = {
    // 部署生产环境和开发环境下的URL。
    // 默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上
    //例如 https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 baseUrl 为 /my-app/。
    publicPath: process.env.NODE_ENV === 'production' ? './' : '/', //根路径

    // outputDir: 在npm run build 或 yarn build 时 ,生成文件的目录名称(要和baseUrl的生产环境路径一致)
    outputDir: "dist",
    //用于放置生成的静态资源 (js、css、img、fonts) 的;(项目打包之后,静态资源会放在这个文件夹下)
    assetsDir: "static",
    //指定生成的 index.html 的输出路径  (打包之后,改变系统默认的index.html的文件名)
    // indexPath: "myIndex.html",
    //默认情况下,生成的静态资源在它们的文件名中包含了 hash 以便更好的控制缓存。你可以通过将这个选项设为 false 来关闭文件名哈希。(false的时候就是让原来的文件名不改变)
    filenameHashing: false,

    //   lintOnSave:{ type:Boolean default:true } 问你是否使用eslint,设置为时true,eslint-loader将发出lint错误作为警告。默认情况下,警告仅记录到终端,并且不会使编译失败。
    lintOnSave: true,
    //如果你想要在生产构建时禁用 eslint-loader,你可以用如下配置
    lintOnSave: process.env.NODE_ENV !== 'production',

    //是否使用包含运行时编译器的 Vue 构建版本。设置为 true 后你就可以在 Vue 组件中使用 template 选项了,但是这会让你的应用额外增加 10kb 左右。(默认false)
    runtimeCompiler: false,
    //默认情况下babel-loader忽略其中的所有文件node_modules。如果要使用Babel显式转换依赖关系,可以在此选项中列出它
    transpileDependencies: [],

    // 不需要生产环境的 source map,可以将其设置为 false 以加速生产环境构建,map就是为了方便打印错误位置。
    productionSourceMap: false,
    //在生成的HTML中配置crossorigin属性<link rel="stylesheet">和<script>标记。告诉脚本而不发送用户凭据
    crossorigin: undefined,
    /*
     *设置为在生成的HTML中true启用子资源完整性(SRI)<link rel="stylesheet">和<script>标记。如果您在CDN上托管构建的文件,最好启用此功能以获得额外的安全性。
     *,启用SRI时,由于Chrome中的错误导致资源被下载两次,因此会禁用预加载资源提示
     * */
    // ntegrity: true,
    //默认情况下,只有以文件结尾的文件*.module.[ext]才会被视为CSS模块。将此设置为true允许您.module放入文件名并将所有*.(css|scss|sass|less|styl(us)?)文件视为CSS模块。
    //extract true在生产中,false在开发中,是否将组件中的CSS提取到独立的CSS文件中(而不是在JavaScript中内联并动态注入,在开发模式下禁用提取CSS,因为它与CSS热重新加载不兼容
    //sourceMap是否为CSS启用源映射。将此设置为true可能会影响构建性能
    //将选项传递给与CSS相关的加载器
    css: {
        modules: false,
        extract: true,
        sourceMap: false,
        loaderOptions: {
            css: {
                // options here will be passed to css-loader
            },
            postcss: {
                // options here will be passed to postcss-loader
            }
        }
    },

    // 它支持webPack-dev-server的所有选项
    devServer: {
        host: "localhost",
        port: 8080, // 端口号
        https: false, // https:{type:Boolean}
        open: true, //配置自动启动浏览器
        // proxy: 'http://localhost:9000' // 配置跨域处理,只有一个代理

        // 配置多个代理
        proxy: {
            "/api": {
                target: "<url>", //目标主机端口域名
                ws: true, //代理的WebSockets  
                changeOrigin: true, //需要虚拟主机站点(是否跨域)
                secure: false, // 如果是https接口,需要配置这个参数
                pathRewrite: {
                    '^/api': ''
                }
            },
            "/api2": {
                target: "<other_url>"
            }
        }
    }
}

三、在封装的request.js中

const request = axios.create({
  baseURL: process.env.NODE_ENV === 'production' ? process.env.BASE_API : '/api',
  timeout: 10000
})
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值