命令行切换小程序开发环境

命令行切换小程序开发环境

  • 只需要使用node+npm, 就可以实现切换小程序的开发环境
  • 实现思路: 使用npm脚本(npm scripts)指定node脚本main.js. 并根据参数, 将指定的configs/xxx.js配置文件内容读取并写入到当前使用的配置文件ext.js

目录介绍

├── configs // 不同环境的配置文件都在这个目录
│   │── ext.test120001.js // 测试环境1
│   │── ext.test120002.js // 测试环境2
│   │── ext.dev120001.js // 开发环境1
│   │── ext.dev120002.js // 开发环境2
│   │── ext.prod120001.js // 生产环境1
│   └── ext.prod120002.js // 生产环境2
│
│── ext.js // 当前使用的配置文件
│── app.js // 小程序的app.js
│── main.js // node执行脚本
└── package.json // package.json配置文件

/config/ext.test120001.js 示例

// /config/ext.test120001.js 示例
export default {
  "blockId": "120001",// 自定义参数
  "baseURL": "https://test.yourdomain.com",// 接口地址
  "defaultTitle": "y约油-测试" // 小程序首页title
}

小程序app.js文件

// app.js
import extJson from './ext.js';
App({
  globalData:{
    extJson // ext.js中的环境配置参数
  }
})

node脚本main.js

// main.js
const process = require('process')
const fs = require('fs') //文件读取和写入
const arr = process.argv // 命令行参数[]

const NODE_ENV = arr[2] // node命令第3个参数

// 各个环境对应的小程序名称
const configs = {
  'dev120001': '开发小程序1',
  'dev120002': '开发小程序2',
  'test120001': '测试小程序1',
  'test120002': '测试小程序2',
  'prod120001': '生产小程序1',
  'prod120002': '生产小程序2'
}

if (NODE_ENV) {
  let read = fs.readFileSync(`./configs/ext.${NODE_ENV}.js`, 'utf-8')
  fs.writeFile('./ext.js', read, 'utf-8', err => {
    if (err) {
      console.error(`切换环境${NODE_ENV}失败`)
    } else {
      console.log(`切换环境${NODE_ENV}成功, 请切换小程序至==>${configs[NODE_ENV]}`)
    }
  })
}

package.json

{
  "scripts": {
    "test120001": "node ./main.js test120001",
    "test120002": "node ./main.js test120002",
    "dev120001": "node ./main.js dev120001",
    "dev120002": "node ./main.js dev120002",
    "prod120001": "node ./main.js prod120001",
    "prod120002": "node ./main.js prod120002"
  }
}

命令行切换环境

$ npm run dev120001 # 切换到开发环境1
$ npm run dev120002 # 切换到开发环境2
$ npm run test120001 # 切换到测试环境1
$ npm run test120002 # 切换到测试环境2
$ npm run prod120001 # 切换到生产环境1
$ npm run prod120001 # 切换到生产环境2