-
Notifications
You must be signed in to change notification settings - Fork 2
Adam
Adam 是集合了项目生成, 运行, 发布为一体的工具集. 是做分离发版的基础. 与之前的generator工具不同, Adam里除了多了运行和发布的功能外, 生成的文件结构也有所变化, 主要由以下几点
- 不在包含 webpack config 的相关信息
- 不在用 custom.env.config.js 来做项目配置
- 新加了 config.json 来统一做配置
- 编译后的文件结构发生变化
其一, 由于工具提供了运行打包环境, 所以不需要在项目里继续存在相关信息
其二, 由于会涉及到 P端(xadmin) 和 B端(sop) 两个项目, 所以都走统一的配置文件来做项目区分, 和各自所需要的配置
其三, 在老项目中运行时, 工具会引导创建配置文件, 以做兼容
其四, 编译后文件格式的变化主要是适配独立发版的格式, 仅仅是结构上的变化, 内容并无二致
在安装之前, 请先 fixing npm permissions
whoami 查看当前用户名
npm config get prefix 查找目录
sudo chown -R $(whoami) $(npm config get prefix) 一句搞定
如果不想在父级改变权限也可根据NPM文档 分别设置 node_modules, share, bin 的权限
安装Adam
npm install -g bp-adam
接下来使用下列API来执行相关操作
bp init
bp start
bp deploy "我要发布项目拉!"
把指令缩减为 bp 能少打几个字 ( ╮(╯▽╰)╭) , 也相对好记忆.
bp init
创建项目
bp start 运行项目, 会根据配置文件来决定到底是P端环境还是B端
bp deploy
发布项目, 此指令需要一个必选参数, commit information. 此操作会把编译后的结果放到 build 目录, 并在 build 目录提交到本项目的 deploy 分支, 以供发版
先来看默认初始化模板里的配置文件代码, 以P端的为例
{
"name": "<%= name%>",
"type": "<%= type%>",
"proxy": {
"/domain": {
"target": "http://admin.sit.ffan.com/",
"changeOrigin": false,
"headers": {
"Cookie": "PHPSESSID=sm9vejn7ffh0lqc0hfjklmd312"
}
}
}
}
- name 项目名称
- type 项目类型
- proxy 代理设置
不再使用项目本身的webpack config 来编译和运行项目, 还没有做迁移的项目也可以继续使用老的方法编译, 提交代码的方式也和以前一样(和后端的代码一起, 比如都合在xadmin这个库里)
这次Adam工具里非常重要的文件confing.json, 这个不用手动创建了. 在运行start or deploy 的时候如果没有找到配置文件会以交互式的形式引导玩家创建此文件, 之后如果需要代理(解决本地调试跨域的问题), 再去里面自行添加.
新申请的域名是 padmin.ffan.com padmin.sit.ffan.com padmin.test.ffan.com 新项目都会以这几个域作为入口, 所以之前所有
/moon/api
这类的访问的接口都将失效, 因为实际的访问路径是
http://padmin.ffan.com/moon/api
都是404的节奏, 届时会在bp-utils工具包里面提供 api 工具, 包装了 angular $http 之外, 有个重要的功能是会转换
/moon/api
为正确的api地址, 比如
https://admin.ffan.com/moon/api
http://admin.sit.ffan/moon/api
如果使用绝对地址, 那么将不会做任何转换 bp-utils的依赖版本暂时以tag的形式 bp-utils@pure 所以优先选择对之前版本没有依赖的项目升级
注意升级到最新版本, 大部分项目都是 latest , 一般运行 npm update 即可, 不是的可以改成 latest 再重新装一次
添加 build 进.gitignore, build里是deploy时生成的文件夹, 里面是编译的代码, 没有必要进代码库
基本的介绍上面API介绍中已经说过了. 这里重点说明的是每个项目自己的deploy分支里面是只有编译后代码的. 这个分支将会作为发版分支接入发版系统, 所以不要直接改动此分支代码或hack code.