cocos-creator-multiplayer/examples/layaair/frontend/.laya/publish_bdgame.js
2021-07-21 23:11:13 +08:00

163 lines
5.7 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// v1.8.0
const ideModuleDir = global.ideModuleDir;
const workSpaceDir = global.workSpaceDir;
//引用插件模块
const gulp = require(ideModuleDir + "gulp");
const fs = require("fs");
const path = require("path");
const revCollector = require(ideModuleDir + 'gulp-rev-collector');
let copyLibsTask = ["copyPlatformLibsJsFile"];
let versiontask = ["version2"];
let
config,
releaseDir;
let versionCon; // 版本管理version.json
let commandSuffix,
layarepublicPath;
gulp.task("preCreate_BD", copyLibsTask, function() {
releaseDir = global.releaseDir;
config = global.config;
commandSuffix = global.commandSuffix;
layarepublicPath = global.layarepublicPath;
});
gulp.task("copyPlatformFile_BD", ["preCreate_BD"], function() {
let adapterPath = path.join(layarepublicPath, "LayaAirProjectPack", "lib", "data", "bdfiles");
// 如果新建项目时已经点击了"微信/百度小游戏bin目录快速调试",不再拷贝
let hasPlatform =
fs.existsSync(path.join(workSpaceDir, "bin", "game.js")) &&
fs.existsSync(path.join(workSpaceDir, "bin", "game.json")) &&
fs.existsSync(path.join(workSpaceDir, "bin", "project.swan.json"));
let hasPublishPlatform =
fs.existsSync(path.join(releaseDir, "game.js")) &&
fs.existsSync(path.join(releaseDir, "game.json")) &&
fs.existsSync(path.join(releaseDir, "project.swan.json"));
let copyLibsList;
if (hasPlatform || hasPublishPlatform) {
copyLibsList = [`${adapterPath}/swan-game-adapter.js`];
} else {
copyLibsList = [`${adapterPath}/*.*`];
}
var stream = gulp.src(copyLibsList);
return stream.pipe(gulp.dest(releaseDir));
});
gulp.task("modifyFile_BD", versiontask, function() {
// 修改game.json文件
let gameJsonPath = path.join(releaseDir, "game.json");
let content = fs.readFileSync(gameJsonPath, "utf8");
let conJson = JSON.parse(content);
conJson.deviceOrientation = config.bdInfo.orientation;
content = JSON.stringify(conJson, null, 4);
fs.writeFileSync(gameJsonPath, content, "utf8");
if (config.version) {
let versionPath = releaseDir + "/version.json";
versionCon = fs.readFileSync(versionPath, "utf8");
versionCon = JSON.parse(versionCon);
}
let indexJsStr = (versionCon && versionCon["index.js"]) ? versionCon["index.js"] : "index.js";
// 百度小游戏项目修改index.js
let filePath = path.join(releaseDir, indexJsStr);
if (!fs.existsSync(filePath)) {
return;
}
let fileContent = fs.readFileSync(filePath, "utf8");
fileContent = fileContent.replace(/loadLib(\(['"])/gm, "require$1./");
fs.writeFileSync(filePath, fileContent, "utf8");
});
// 开放域的情况下合并game.js和index.js并删除game.js
gulp.task("openData_BD", ["modifyFile_BD"], function (cb) {
if (config.openDataZone) {
let versionCon;
if (config.version) {
let versionPath = releaseDir + "/version.json";
versionCon = fs.readFileSync(versionPath, "utf8");
versionCon = JSON.parse(versionCon);
}
let indexJsStr = (versionCon && versionCon["index.js"]) ? versionCon["index.js"] : "index.js";
let indexPath = path.join(releaseDir, indexJsStr);
let indexjs = readFile(indexPath);
let gamejs = readFile(releaseDir + "/game.js");
if (gamejs && indexjs) {
gamejs = gamejs.replace(`require("index.js")`, indexjs);
fs.writeFileSync(indexPath, gamejs, 'utf-8');
}
return cb();
}
cb();
});
function readFile(path) {
if (fs.existsSync(path)) {
return fs.readFileSync(path, "utf-8");
}
return null;
}
gulp.task("modifyMinJs_BD", ["openData_BD"], function() {
// 如果保留了平台文件如果同时取消使用min类库就会出现文件引用不正确的问题
if (config.keepPlatformFile) {
let fileJsPath = path.join(releaseDir, "game.js");
let content = fs.readFileSync(fileJsPath, "utf-8");
content = content.replace(/min\/laya(-[\w\d]+)?\.bdmini\.min\.js/gm, "laya.bdmini.js");
fs.writeFileSync(fileJsPath, content, 'utf-8');
}
if (!config.useMinJsLibs) {
return;
}
let fileJsPath = path.join(releaseDir, "game.js");
let content = fs.readFileSync(fileJsPath, "utf-8");
content = content.replace(/(min\/)?laya(-[\w\d]+)?\.bdmini(\.min)?\.js/gm, "min/laya.bdmini.min.js");
fs.writeFileSync(fileJsPath, content, 'utf-8');
});
gulp.task("version_BD", ["modifyMinJs_BD"], function() {
// 如果保留了平台文件,如果同时开启版本管理,就会出现文件引用不正确的问题
if (config.keepPlatformFile) {
let fileJsPath = path.join(releaseDir, "game.js");
let content = fs.readFileSync(fileJsPath, "utf-8");
content = content.replace(/laya(-[\w\d]+)?\.bdmini/gm, "laya.bdmini");
content = content.replace(/index(-[\w\d]+)?\.js/gm, "index.js");
fs.writeFileSync(fileJsPath, content, 'utf-8');
}
if (config.version) {
let versionPath = releaseDir + "/version.json";
let gameJSPath = releaseDir + "/game.js";
let srcList = [versionPath, gameJSPath];
return gulp.src(srcList)
.pipe(revCollector())
.pipe(gulp.dest(releaseDir));
}
});
gulp.task("optimizeOpen_BD", ["version_BD"], function(cb) {
let bdOptimize = config.bdOptimize;
if (!bdOptimize || !bdOptimize.useOptimizeOpen) {
return cb();
}
// 首屏加载优化(秒开)修改game.json
let filePath = path.join(releaseDir, "game.json");
if (!fs.existsSync(filePath)) {
return cb();
}
let fileContent = fs.readFileSync(filePath, "utf8");
let fileConObj = JSON.parse(fileContent);
if (bdOptimize.preloadRes) {
fileConObj.preloadResources = bdOptimize.preloadResList;
} else {
delete fileConObj.preloadResources;
}
fs.writeFileSync(filePath, JSON.stringify(fileConObj, null, 4), "utf8");
return cb();
});
gulp.task("buildBDProj", ["optimizeOpen_BD"], function() {
console.log("all tasks completed");
});