小程序之如何优雅的通过命令行切换开发环境

前言

因为项目原因,小程序上线到不同环境经常要切换不同的环境变量,参数一多,改起来非常的繁琐,而且还怕改错,特别是上生产环境,每次谨慎地检查好几遍,生怕改错配置参数,就领盒饭回家。
所以,为了饭碗端稳一点,就使用node+npm的命令行方式来解放自己,自动切换不同环境参数,降低出错的几率。

开始

  1. 在根目录下创建几个文件, main.js、config文件夹,包含不同环境的配置config.xx.js和dist目录中config.js,该js文件在app.js中引入,执行命令行后会生成配置到config.js中
│  main.js              // node执行脚本
│  package.json         
│
├─configs               
│      config.qa.js    // 开发环境配置文件
│      config.pd.js    // 生产环境配置文件
│
└─dist
      config.js       // 小程序app.js引入的的配置文件
  1. 初始化创建package.json
npm init -y  # 默认生成
  1. 分别在config.qa.js和config.pd.js中配置参数(可以根据自己的需求创建不同的配置文件)
// config.qa.js
module.exports = {
    baseUrl:'https://abc/api/qa',
    ...
}

// config.pd.js
module.exports = {
    baseUrl:'https://abc/api/pd',
    ...
}
  1. 在main.js中读取配置文件的内容,并写入到dist/config.js中
const fs = require('fs'); // 文件读取和写入
// process中会监听到npm 命令行的参数,根据获取到的参数来获取不同环境的配置
const { argv } = require('process');

// 遍历命令行参数
for(let i=0; i<argv.length;i++){
  if(argv[i] === 'dev'){
    let read = fs.readFileSync('./configs/config.qa.js', 'utf-8')
    fs.writeFile('./dist/config.js',read, 'utf-8', err => {
      if(err){
        console.log('切换测试环境失败')
      }else{
        console.log('切换测试环境成功')
      }
    })
  }else if(argv[i] === 'build'){
    let read = fs.readFileSync('./configs/config.pd.js', 'utf-8')
    fs.writeFile('./dist/config.js',read, 'utf-8', err => {
      if(err){
        console.log('切换生产环境失败')
      }else{
        console.log('切换生产环境成功')
      }
    })
  }
}
  1. 在app.js中引入dist/config.js
import config from './dist/config'

App({
...
globalData: {
	baseUrl: config.baseUrl,
}

})
  1. 在package.json的sript中配置脚本
"scripts": {
    "dev": "node ./main.js dev",
    "build": "node ./main.js build"
  },
  1. 运行脚本,生成配置
npm run dev # 测试环境

npm run build # 生产环境

ok,结束撒花!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值