upload-mp-weixin.js 2.5 KB

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