痛点
在多个小程序多个环境下开发,频繁切换,有时候还记不住Appid,重新找,实在烦人。
解决方案
微信小程序appid 修改作用于project.config.json,意味着通过脚本修改project.config.json 下的appid即可。
思路
- 通过 node 的 process.argv 获取命令行参数,根据参数获取不同的appid,进行修改
- 通过 node 的readFileSync、writeFileSync进行对微信小程序配置文件project.config.json读写操作即可。
实现代码 index.js
#!/usr/bin/env node
console.log('修改小程序开发环境')
const fs = require("fs");
const setting = {
a: {
dev: {
mode: 'dev',
appid: '******',
},
pro: {
mode: 'pro',
appid: '******',
},
},
b: {
dev: {
mode: 'dev',
appid: '******',
},
pro: {
mode: 'pro',
appid: '******',
}
}
}
let pjName = 'project.config.json'
let projectPath = ''
let settingData = {}
try {
let setArgv = process.argv.slice(2)
if (setArgv.length !== 2) {
console.log('缺少参数',setting)
return
}
if (!setting[setArgv[0]]) {
console.log('参数错误',setting)
return
}
if (!setting[setArgv[0]][setArgv[1]]) {
console.log('参数错误',setting)
return
}
settingData = setting[setArgv[0]][setArgv[1]]
console.log('process.argv', setArgv)
projectPath = process.cwd() + '\\' + pjName
let isFile = fs.statSync(projectPath).isFile()
if (isFile) {
console.log(projectPath)
try {
let data = fs.readFileSync(projectPath, 'utf8');
let jsonData = JSON.parse(data)
jsonData.setting.appid = settingData.appid
jsonData.appid = settingData.appid
fs.writeFileSync(projectPath, JSON.stringify(jsonData, '', 2) );
} catch (e) {
console.error('json error', e);
}
}
} catch(e){}
console.log('修改小程序开发环境 成功:' + settingData.mode)
构建命令行
- 在 index.js 文件夹下,执行npm init ,生成package.json文件
- 在package.json中添加:
"bin": {
"set-wx": "./index.js"
},
注意: 在index.js 顶部,添加: #!/usr/bin/env node
- 在目录下执行npm i ./ -g ,安装全局
- 安装成功,就可以使用 set-wx a dev ,修改配置了。乐滋滋
代码