最近公司新来了个前端小兄弟提了个很好的建议我们项目中有3套环境,每次跑环境打包生产或者测试环境时候都要手动切换接口,这无疑是个非常麻烦的事儿。能不能用一个简单node命令执行npn run … 的时候就直接让他自动切换指定环境上呢。嘿~问道点子上了,这个东西在两年前我部署一个自己脚手架,其中就涉及到这一部分,最近工作忙新的项目没有配置修改今天既然提到了我也正好做一个记录

首先我们先上图。

         在这种情况下我们每次想换个环境代码时候需要手动注释然后切换路径重新运行脚手架,如果在不使用vite的情况下当代码量很大的时候是非常浪费开发者时间的。而且在打包的时候也非常会容易出现注释错误问题。那么怎么来解决呢?本人技术浅薄目前只能提供两种方式如若大神更好方式欢迎评论指教。我看了网上有很多文章但是讲的都不是很精细,我用大白话简单的说一下。

1:在packjson定义新的指令去做这件事

首先在脚手架的根目录添加两个文件

.env.xxxxxx

.env.xxxxxx

下图

接下来就非常简单了只要把原来需要替换接口文件的地方(vue.config.js环境代理axios引用url服务器域名前缀

 process.env.VUE_APP_BASE_URL(VUE_APP_BASE_URL这个是你在.env环境下设置变量名称你可以随意设置

 

 最后一步。只需要在你packjson.jsscript标签里面添加需要定义命令并且 —mode指向env文件后缀名node就会自动判断你要是用的路径了~

 这样的话完工了。我们可以用 

npm run build           打包生产环境

npm run buildTest    打包测试环境

npm run dev             本地运行测试环境

npm run serve          本地运行生产环境

原理:wepack打包的时候会根据你制定的node命令packjson里面找到本地你要是用的.env文件

2:根据node命令判断用js逻辑出去处理所用的路径

通晓第一个方式的人可能会提出一个问题,就是,我不想记住那么多命令,我也不想改变原有的命令那有什么办法呢?有!

我们可以npm run buil —test   和  npm run buildpro

 这种方式更符合vue npm开发规范。不多说也直接上图。这个更炫也更符合规范,但是相对的对修改者的底层源码能力要求更高,至少你要懂一些webpack配置项和node原理命令

 vuecli3或以上版本一个vue.congfig.js文件,这个相信大家都不陌生,

首先我们vue.congfig.js文件下面在先获取我们的 —xxx后缀

// npm 获取自定义命令 node版本不一样,获取指令参数不一样

const npmConfigArg = JSON.parse( process.env.npm_config_argv );

const original = npmConfigArg.original.slice( 1 );

const UNICOM_SERVER_ENV = original[1] ? original[1].replace( /--/g, '' ) : '';

然后我们在下面配置我们获取命令configureWebpack配置项如下图

 代码段如下,其中process.env.UNICOM_SERVER_ENV中的UNICOM_SERVER_ENV就是你获取node命令后缀全局使用

configureWebpack: {
    plugins: [
      new webpack.DefinePlugin( {
        'process.env.UNICOM_SERVER_ENV': JSON.stringify( UNICOM_SERVER_ENV ),
      } )
    ]
  }

 这个就不多解释了哈可以自己百度webpack的配置项。然后第二步在切换地址位置写一段简单js。上代码

let env = process.env.UNICOM_SERVER_ENV;  
/*
    process.env.UNICOM_SERVER_ENV 就是
    npm run serve --xxx 后面的xxx 这样的话
    就可以直接判断了
*/
const url = {
    pro:`http://baidu.shegnchan.com`,
    dev:`http://baidu.cheshi.com`,
}
if(process.env.NODE_ENV !== "production"){
    url.pro = "/api-proxy"
    url.dev = '/api-proxy'
}
function urIMap( env ) {return url[env] || url["dev"];}
// 确定前缀
export const baseUrl = urIMap( env ) // 生产环境

这回在运行 npm run servedev 就是测试环境

                   npm run servedev 就是生产环境了

如果有哪里写的不太清楚的欢迎指正,指导。

原文地址:https://blog.csdn.net/weixin_45160806/article/details/129146846

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33184.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注