• VUE 如何分环境打包(开发/测试/生产)配置


    前言

    之前小玲一直处于更新,迭代项目的状态,开发环境、测试环境、生产环境都是前辈配置好的,自己几乎没有配置过,这次做几个新项目时,面临着上线,需要分环境打包配置,于是在网上遨游了一会会,摸索着按照网上的方法,试验了一把,三种环境已经能够用命令分开打包。于是便决定写下这一篇可能已经过时但还能提供些微帮助的笔记

    一般情况下我们执行命令 npm run build就能把Vue项目打包,但是这样操作每次只能打包到一个环境,不同环境需要配置不同的地址,还得手动更改接口的地址,这给部署带来了极大的不方便。

    所以为了解决这个(偷)问题(懒),我们只需要按照以下几步配置一下即可:

    1.确定目录结构:

     2.修改config内的prod.env.js文件:

    1 'use strict'
    2 module.exports = {
    3    NODE_ENV: '"production"',
    4    ENV_CONFIG:'"prod"'
    5 }

    3.在config目录内新建test.env.js文件(要保证和prod.env.js一致):

    1 'use strict'
    2 module.exports = {
    3     NODE_ENV: '"testing"',
    4     ENV_CONFIG:'"test"'
    5 }

    4.在build目录下修改webpack.prod.conf.js:

    1 // const env = require('../config/prod.env')  注释这一行
    2 //添加下面几行
    3 if(process.env.NODE_ENV === 'testing') {
    4     var env = require('../config/test.env')
    5     console.log("test")
    6 }else{
    7     var env = require('../config/prod.env')
    8     console.log("prod")
    9 }

    5.确认安装cross-env,执行命令:

    cnpm install cross-env --save-dev  或者   npm install cross-env --save-dev 

    6.修改package.json文件(在script里面添加):

     1 {
     2   "name": "teach-manger",
     3   "version": "1.0.0",
     4   "description": "teach and student  manager",
     5   "author": "xiaoling",
     6   "private": true,
     7   "scripts": {
     8     "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js",
     9     "start": "npm run dev",
    10     "lint": "eslint --ext .js,.vue src",
    11     "build": "node build/build.js",
    12     "build:report": "npm_config_report=true node build/build.js",
    13     "build--test": "cross-env NODE_ENV=testing env_config=test node build/build.js",
    14     "build--prod": "cross-env NODE_ENV=production env_config=prod node build/build.js"
    15   },

    7.在放置公共文件的目录下或者axios.js文件中(总之就是设置axios.defaults.baseURL之前)新建env.js,对环境进行判断并切换,内容如下:

     1 /*
     2  * 配置编译环境和线上环境之间的切换
     3  * baseUrl: 域名地址
     4  * routerMode: 路由模式
     5  * DEBUG: debug状态
     6  * cancleHTTP: 取消请求头设置
     7  */
     8 const baseUrl = '';
     9 const routerMode = 'history';
    10 const DEBUG = false;
    11 const cancleHTTP = [];
    12 if (process.env.NODE_ENV == 'development') {
    13     baseUrl = "http://192.168.xxx.xxx";
    14     DEBUG = true;
    15 }else if(process.env.NODE_ENV == 'testing'){
    16     baseUrl = "http://test.xxx.com";
    17     DEBUG = false;
    18 }else if(process.env.NODE_ENV == 'production'){
    19     baseUrl = "http://www.xxx.com";
    20     DEBUG = false;
    21 }
    22 export{
    23     baseUrl,
    24     routerMode,
    25     DEBUG,
    26     cancleHTTP
    27 }

    8.在axios请求接口的文件内引入env.js

     1 import axios from 'axios'
     2 import {Message} from 'element-ui'
     3 import store from '../store'
     4 import {getToken, removeToken} from '@/utils/auth'
     5 import {loginUrl} from '@/config/common'
     6 import {baseUrl} from '@/config/env'
     7 
     8 // 创建axios实例
     9 const service = axios.create({
    10     // baseURL: process.env.BASE_API, // api的base_url
    11     baseURL: baseUrl, // api的base_url
    12     timeout: 50000, // 请求超时时间
    13     headers: {
    14         'X-Requested-With': 'XMLHttpRequest',
    15         'Content-Type': 'application/json'
    16     }
    17 })

    9.找到build/build.js 文件,注释或者删除这行代码,这步非常重要,否则打包完会一直走生产环境

     

    10.配置成功,运行命令如下

    测试环境打包,运行:cnpm run build--test
    生产环境打包,运行:cnpm run build--prod

    好了,可以开启偷懒模式了~

  • 相关阅读:
    css3---2D效果 ---3D效果
    PHP 代 码 操 作 文 件
    文件上传
    在AJAX里 使用【 XML 】 返回数据类型 实现简单的下拉菜单数据
    在AJAX里 使用【 JSON 】 返回数据类型 实现简单的下拉菜单数据
    使用 AJAX + 三级联动 实现分类出全国各地的省,市,区
    AJAX里使用的弹窗样式 tanchuang.js tanchuang.css
    jquery-1.11.2.min.js
    使用【 ajax 】【 bootstrap 】显示出小窗口 详情内容 一些代码意思可以参考下一个文章
    AJAX基本操作 + 登录 + 删除 + 模糊查询
  • 原文地址:https://www.cnblogs.com/yjiangling/p/13863434.html
Copyright © 2020-2023  润新知