前言
因为项目原因,小程序上线到不同环境经常要切换不同的环境变量,参数一多,改起来非常的繁琐,而且还怕改错,特别是上生产环境,每次谨慎地检查好几遍,生怕改错配置参数,就领盒饭回家。
所以,为了饭碗端稳一点,就使用node+npm的命令行方式来解放自己,自动切换不同环境参数,降低出错的几率。
开始
- 在根目录下创建几个文件, 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引入的的配置文件
- 初始化创建package.json
npm init -y # 默认生成
- 分别在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',
...
}
- 在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('切换生产环境成功')
}
})
}
}
- 在app.js中引入dist/config.js
import config from './dist/config'
App({
...
globalData: {
baseUrl: config.baseUrl,
}
})
- 在package.json的sript中配置脚本
"scripts": {
"dev": "node ./main.js dev",
"build": "node ./main.js build"
},
- 运行脚本,生成配置
npm run dev # 测试环境
npm run build # 生产环境
ok,结束撒花!