publish_qqgame.js 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. // v1.0.0
  2. // publish 2.x 也是用这个文件,需要做兼容
  3. let isPublish2 = process.argv[2].includes("publish_qqgame.js") && process.argv[3].includes("--evn=publish2");
  4. // 获取Node插件和工作路径
  5. let ideModuleDir, workSpaceDir;
  6. if (isPublish2) {
  7. //是否使用IDE自带的node环境和插件,设置false后,则使用自己环境(使用命令行方式执行)
  8. const useIDENode = process.argv[0].indexOf("LayaAir") > -1 ? true : false;
  9. ideModuleDir = useIDENode ? process.argv[1].replace("gulp\\bin\\gulp.js", "").replace("gulp/bin/gulp.js", "") : "";
  10. workSpaceDir = useIDENode ? process.argv[2].replace("--gulpfile=", "").replace("\\.laya\\publish_qqgame.js", "").replace("/.laya/publish_qqgame.js", "") + "/" : "./../";
  11. } else {
  12. ideModuleDir = global.ideModuleDir;
  13. workSpaceDir = global.workSpaceDir;
  14. }
  15. //引用插件模块
  16. const gulp = require(ideModuleDir + "gulp");
  17. const fs = require("fs");
  18. const path = require("path");
  19. const crypto = require("crypto");
  20. const childProcess = require("child_process");
  21. const del = require(ideModuleDir + "del");
  22. const revCollector = require(ideModuleDir + 'gulp-rev-collector');
  23. let commandSuffix = ".cmd";
  24. let prevTasks = ["packfile"];
  25. if (isPublish2) {
  26. prevTasks = "";
  27. }
  28. let
  29. config,
  30. platform,
  31. releaseDir;
  32. let isGlobalCli = true;
  33. let versionCon; // 版本管理version.json
  34. // 应该在publish中的,但是为了方便发布2.0及IDE 1.x,放在这里修改
  35. gulp.task("preCreate_QQ", prevTasks, function() {
  36. if (isPublish2) {
  37. let pubsetPath = path.join(workSpaceDir, ".laya", "pubset.json");
  38. let content = fs.readFileSync(pubsetPath, "utf8");
  39. let pubsetJson = JSON.parse(content);
  40. platform = "qqgame";
  41. releaseDir = path.join(workSpaceDir, "release", platform).replace(/\\/g, "/");
  42. config = pubsetJson[2];
  43. } else {
  44. platform = global.platform;
  45. releaseDir = global.releaseDir;
  46. config = global.config;
  47. }
  48. // 如果不是QQ小游戏
  49. if (platform !== "qqgame") {
  50. return;
  51. }
  52. if (process.platform === "darwin") {
  53. commandSuffix = "";
  54. }
  55. let copyLibsList = [`${workSpaceDir}/bin/libs/laya.qqmini.js`];
  56. var stream = gulp.src(copyLibsList, { base: `${workSpaceDir}/bin` });
  57. return stream.pipe(gulp.dest(releaseDir));
  58. });
  59. gulp.task("copyPlatformFile_QQ", ["preCreate_QQ"], function() {
  60. // 如果不是QQ小游戏
  61. if (platform !== "qqgame") {
  62. return;
  63. }
  64. let adapterPath = path.join(ideModuleDir, "../", "out", "layarepublic", "LayaAirProjectPack", "lib", "data", "qqfiles");
  65. let stream = gulp.src(adapterPath + "/*.*");
  66. return stream.pipe(gulp.dest(releaseDir));
  67. });
  68. gulp.task("version_QQ", ["copyPlatformFile_QQ"], function() {
  69. // 如果不是QQ小游戏
  70. if (platform !== "qqgame") {
  71. return;
  72. }
  73. if (config.version) {
  74. let versionPath = releaseDir + "/version.json";
  75. let gameJSPath = releaseDir + "/game.js";
  76. let srcList = [versionPath, gameJSPath];
  77. return gulp.src(srcList)
  78. .pipe(revCollector())
  79. .pipe(gulp.dest(releaseDir));
  80. }
  81. });
  82. gulp.task("buildQQProj", ["version_QQ"], function() {
  83. console.log("all tasks completed");
  84. });