upload-mp-weixin.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. const fs = require("fs");
  2. const path = require("path");
  3. const ci = require("miniprogram-ci");
  4. const execSync = require("child_process").execSync;
  5. const distDir = path.resolve(__dirname, "../dist");
  6. // 实例化小程序 ci
  7. const project = new ci.Project({
  8. appid: "wx090cc3b016e45bfe",
  9. type: "miniProgram",
  10. projectPath: path.resolve(distDir, "./build/mp-weixin"),
  11. privateKeyPath: path.resolve(__dirname, "./private.wx090cc3b016e45bfe.key"),
  12. ignores: [],
  13. });
  14. const gitShortKey = execSync("git rev-parse --short HEAD").toString().trim();
  15. const gitCommitMsg = execSync("git log --pretty=format:“%s” -1")
  16. .toString()
  17. .trim()
  18. .replace(/(^["“])|(["”]$)/g, "");
  19. const gitCommitName = execSync("git log --pretty=format:“%cn” -1")
  20. .toString()
  21. .trim()
  22. .replace(/(^["“])|(["”]$)/g, "");
  23. let desc = `${gitCommitName}: ${gitCommitMsg}`;
  24. if (process.env.change_desc && process.env.operator) {
  25. desc = `${process.env.operator}: ${process.env.change_desc}`;
  26. }
  27. const onProgressUpdate = (taskStatus) => {
  28. switch (taskStatus._status) {
  29. case "doing":
  30. console.log("上传中: ", taskStatus._msg);
  31. break;
  32. case "done":
  33. console.log("上传完成: ", taskStatus._msg);
  34. break;
  35. }
  36. };
  37. // 测试环境用开发版,不上传至小程序后台
  38. const preview = async () => {
  39. try {
  40. fs.mkdirSync(path.resolve(distDir, `./qrcode`));
  41. } catch (e) {}
  42. const previewResult = await ci.preview({
  43. project,
  44. desc,
  45. setting: {},
  46. qrcodeFormat: "image",
  47. qrcodeOutputDest: path.resolve(distDir, `./qrcode/${gitShortKey}.jpg`),
  48. onProgressUpdate,
  49. pagePath: "pages/index/index", // 预览页面
  50. // searchQuery: 'a=1&b=2', // 预览参数 [注意!]这里的`&`字符在命令行中应写成转义字符`\&`
  51. });
  52. console.log("小程序上传完成🚀 ", previewResult);
  53. };
  54. // 正式环境用体验版,上传至小程序后台
  55. const publish = async () => {
  56. const version =
  57. process.env.MP_VERSON || process.env.version
  58. ? `1.0.${process.env.version}`
  59. : "1.0.0";
  60. try {
  61. const uploadResult = await ci.upload({
  62. project,
  63. version,
  64. desc,
  65. setting: {},
  66. onProgressUpdate,
  67. });
  68. console.log("小程序上传完成🚀 ", uploadResult);
  69. } catch (e) {
  70. console.info("上传出错,请检查网络或过会再试 ❌", e);
  71. throw new Error(e);
  72. }
  73. };
  74. (async () => {
  75. if (process.argv.includes("--publish")) {
  76. console.log("发布小程序🚀");
  77. publish();
  78. } else {
  79. console.log("上传预览小程序🚀");
  80. preview();
  81. }
  82. })();