Commit e17c9229 authored by wangzhujun's avatar wangzhujun

123

parent d7bd2972
module.exports = {
opn: 0,
devPort: 8080,
proxy: {
'/ngapi/*': 'http://localhost:3000',
'/plugin/*': 'http://localhost:3000',
'/ngame/*': 'http://localhost:3000',
'/activityCommon/*': 'http://localhost:3000',
'/ctool/*': 'http://localhost:3000',
'/activityVist/*': 'http://localhost:3000',
'/collectGoods/*': 'http://localhost:3000',
'/activityPlugDrawInfo/*': 'http://localhost:3000',
'/collectRule/*': 'http://localhost:3000',
'/hdtool/*': 'http://localhost:3000',
'/activityPlugin/*': 'http://localhost:3000',
'/summer/*': 'http://localhost:3000',
'/senstiveword/*': 'http://localhost:3000',
'/customActivity/*': 'http://localhost:3000',
'/aaw/*': 'http://localhost:3000',
'/kjy/*': 'http://localhost:3000',
'/aww/*': 'http://localhost:3000',
'/projectx/*': 'http://localhost:3000'
}
}
\ No newline at end of file
# 所有空行或者以注释符号 # 开头的行都会被 Git 忽略。
# 可以使用标准的 glob 模式匹配。
# 匹配模式最后跟反斜杠(/)说明要忽略的是目录。
# 要忽略指定模式以外的文件或目录,可以在模式前加上惊叹号(! )取反。
# 所谓的 glob 模式是指 shell 所使用的简化了的正则表达式。星号(*)匹配零个或多个任
# 意字符; [abc] 匹配任何一个列在方括号中的字符(这个例子要么匹配一个 a,要么匹配一
# 个 b,要么匹配一个 c);问号(?)只匹配一个任意字符;如果在方括号中使用短划线分
# 隔两个字符,表示所有在这两个字符范围内的都可以匹配(比如 [0-9] 表示匹配所有 0 到
# 9 的数字)。
# 书上的一个例子
# #此为注释 – 将被 Git 忽略
# *.a
# 忽略所有 .a 结尾的文件
# !lib.a
# 但 lib.a 除外
# /TODO
# 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
# build/
# 忽略 build/ 目录下的所有文件
# doc/*.txt
# 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
node_modules
bin-release
.DS_Store
egret/.DS_Store
**/*/.tmproject
\ No newline at end of file
registry = http://npm.dui88.com/
\ No newline at end of file
## 安装和更新构建工具
重新拉取代码,然后安装依赖。
``` bash
git pull && cnpm install
```
## 启动本地服务器
``` bash
npm run dev
```
之后会自动打开浏览器。建议在vscode中f5调试,效率更高。
## 发布
### 全发布
```bash
npm run build
```
### 仅仅发布src下的TS代码
``` bash
npm run buildTS
```
之后只需要更新皮肤中的`output.js`文件的版本号
```js
<script crossorigin="anonymous" src="//yun.duiba.com.cn/db_games/activity/demo/1537173012/output.js"></script>
```
### 仅仅发布exmls文件
``` bash
npm run buildExml
```
之后只需要更新皮肤中的`default.thm.js`文件的版本号
```js
<script crossorigin="anonymous" src="//yun.duiba.com.cn/db_games/activity/demo/1537172754/resource/default.thm.js"></script>
```
## demo
- demo皮肤 https://mng.duiba.com.cn/DuibaNgameBrick/edit/476
- demo线上url http://activity-2.m.duiba.com.cn/ngame/index?id=3122353&dbnewopen&dpm=1.5.677.4&dcm=202.3122353.4.677
## 项目结构介绍
### .vscode
vscode调试配置文件,需要提前安装chrome debugger插件。
### egret
egret相关根目录。特别说明:暂时无法把其中文件放到根目录,后续优化。
- bin-release 发布文件目录,oss提交根目录
- libs库文件夹
- resource对应egret的resource
- scripts为发布相关脚本
- src源码目录。
- template勿删。
- autoMerger.js生成图集合并的项目配置文件。
- egretProperties.json,egret项目配置
- index.html,入口文件。
- project.json,同以前,后续考虑优化掉。
- publish.js oss发布文件。
- tsconfig.json ,ts配置。
- wingProperties.json,egret wing配置。
### mock
mock配置,同以前。
### .buildrc.js
构建配置
### .npmrc
npm源配置。
### build.js
构建脚本。
## 说明
### 自动化图集合并说明
不会合并组内的jpg。一般jpg都是外部加载,合入png图集,会显著增加png图集的体积
## 未来
- 增加webp支持,提升载入速度。
- 基于asm的mock api
- 更快的编译(优化devtool)
- 更高效的研发:引入HRM
## 背景
尽量保持以往的开发习惯,减少工作流的环节变更,减少迁移引擎导致的成本
## 优势
- 一键发布
- 自动化编译,极快的编译速度,极致的开发效率。抛弃了egret build,因为它非常的慢,空项目编译2秒,项目代码越多编译越慢,而且还需要手动编译。
- 非常快的首屏载入速度。合并了所有egret相关库为单独一个文件 //yun.duiba.com.cn/db_games/lib2_game.min.js,抛弃了非常慢的基于manifest的串行加载。(egert p2.js cdn //yun.duiba.com.cn/db_games/physics.min.js)
- tinypng图片压缩由手动升级为自动,大大提升研发效率
- 自动化合并图集。开发阶段不需要合并图集,大大提升开发效率。
- 修改exmls等其他项目文件后自动刷新浏览,进一步提升研发效率。
- 0成本迁移tc和tw(无需要修改代码)
- 0成本迁移mock
- 暂不使用egret的网络通讯库,仍然使用zepto(有空优化)
- 其他无成本迁移的开发习惯,比如自动编译、自动刷新浏览器、编辑器vscode、webstorm习惯等。
- 项目初始化简化:现在依赖只需要安装一次,不需要每个项目都安装一次。移除了project.json。
- 和其他egret工具、流程兼容,比如exml编辑器egret wing。
- 以前一个皮就是一个项目。现在只有一个vscode项目,方便管理项目。
- 使用新的git流,可以有效的减少整个仓库的体积,几十上百个项目,其实有用的不多
- 相对以前发布速度极快。只有代码变更的时候,只需要编译ts发布,只有exmls文件变更的时候,只发布exmls,大大节省了发布时间。
- 现在代码里有基本的panel,scene,loading可以参考一下,后续会独立成类似tl、wx的库
## 项目创建和维护流程
1.先建立一个分支
git checkout -b kickball-20180910
2.然后duiba-games下直接创建【项目名称】的文件夹kickball-20180910
3.push分支到远程
git push --set-upstream origin kickball-20180910
4.然后在分支下开发,如果是新类型游戏,将来可能需要换皮的,那么备份到backup下。移动 kickball-20180910到backup。
5.然后合并到主分支。
git checkout dev
git merge kickball-20180910
git push
6、因为已经backup,所以这个分支已经没用了,删除分支
git branch -D kickball-20180910
git push origin :kickball-20180910
如果不需backup后面要维护,那么留着分支,不必合并到主分支。这样可以避免频繁提交导致的频繁git pull,提升效率。
\ No newline at end of file
// let argvs = JSON.parse(process.env.npm_config_argv);
// let remain = argvs.remain;
let cmd = process.argv[2];
const DBGBuild = require('duiba-game-build');
const config = require('./.buildrc');
let build = new DBGBuild(config);
if (cmd === 'build' && process.argv[3] === 'prod') {
// if (cmd === 'build' && remain[1] === 'prod') {
cmd = 'buildProd';
if (process.argv[4] === 'ts')
cmd = 'buildProdTS';
if (process.argv[4] === 'exml')
cmd = 'buildProdEXML';
}
build[cmd]('egret');
\ No newline at end of file
let inquirer = require('inquirer');
const spawn = require('cross-spawn');
const questions = require('./question');
let moment = require('moment');
const today = moment().format('YYYYMMDD');
inquirer.prompt(questions).then(answers => {
let cmdType = answers.commandType || '';
let skinName = answers.skinName || '';
let branchName = answers.branchName || '';
let cmd = '';
switch (cmdType) {
case 'create':
cmd = `npm run copy ${skinName}`;
break;
case 'create_react':
cmd = `npm run copy ${skinName} custom-react`;
break;
case 'prettier':
cmd = 'npm run lint';
break;
case 'develop':
cmd = `npm run dev ${skinName}`;
break;
case 'build_test':
cmd = `npm run build ${skinName}`;
break;
case 'build_prod':
cmd = `npm run build ${skinName} prod`;
break;
case 'backup':
cmd = `npm run backup`;
break;
case 'create_branch':
cmd = `git checkout -b feature/${today}-${branchName}`;
break;
default:
break;
}
if (cmd) {
cmd = cmd.split(' ');
let _cmd = cmd[0];
let _args = cmd.slice(1);
var ls = spawn(_cmd, _args);
ls.stdout.on('data', data => {
console.log(`${data}`);
});
ls.stderr.on('data', data => {
console.log(`stderr: ${data}`);
});
ls.on('close', code => {
// console.log(`子进程退出码:${code}`);
});
}
});
{
"name": "duiba-games",
"version": "1.0.0",
"description": "兑吧游戏自动化工程",
"main": "index.js",
"scripts": {
"dev": "node build.js dev",
"build": "node build.js build prod",
"buildTS": "node build.js build prod ts",
"buildExml": "node build.js build prod exml",
"backup": "node build.js backup",
"copy": "node build.js copy",
"cli": "node cli.js"
},
"author": "",
"license": "ISC",
"keywords": [],
"dependencies": {},
"devDependencies": {
"ali-oss": "^4.11.4",
"chalk": "^2.3.0",
"co": "^4.6.0",
"cross-spawn": "^6.0.5",
"duiba-game-build": "git+ssh://git@gitlab2.dui88.com:wanghongyuan/dbgame-build.git",
"inquirer": "^6.2.0",
"moment": "^2.22.2",
"progress": "^2.0.0"
},
"sideEffects": false
}
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment