拆库开发亦称分仓库开发。
想象一下,如果一个小程序非常大,涉及多条业务线,每条业务线有自己的开发一个频道。 如果没有拆库功能,本地开发时,需要将整个工程全量 clone 到本地然后进行开发。
一旦项目体量大起来(业务线多起来),上面这种方式很容易不小心误触别业务线的代码,并且全量编译的时间更长,效率低。
在开发时:
这,就是 nanachi 拆库开发所要解决的问题。
要使用 nanachi 拆库功能,首先要把各业务线拆分成“拆库工程”。
我们允许每个业务线都独立建一个github/gitlab仓库进行独立开发,每个仓库需要保持 nanachi 工程所必须的目录结构(这是必须的)。
注意事项:应该拆库出一个“主包拆库工程”,主包中必须含有app.js。这是开发依赖,当用户开发自己的项目时,必须先要安装含有app.js的主包
举个栗子:比如我们 qunar 有的火车票业务线和酒店业务线,如何针对这两个业务线进行拆库呢?
{
"nanachi": {
"chaika": true //这是告诉 nanachi,当前快发模式为“拆库”模式。
}
}
app.json:注意上面的拆库目录结构都有一个app.json,内容为:
{
"pages": [
"pages/plat/pageA/index",
"pages/plat/pageB/index"
],
"nanachi":{
"alias": {
"@hotel/common": "source/common/hotel"
}
},
"order": 100
}
clone 你自己的业务线代码: git clone git@xxx.git
.
安装你的项目依赖的其他业务线拆卡工程:nanachi install git@otherProject.git -b branchName
(跟git clone一回事)。
注意:首先要安装“拆库主包工程”,即包含 app.js 的拆卡工程,这是所有业务线的开发,运行依赖。再根据实际场景决定是否需要安装其他拆卡工程。
nanachi watch
相比之前的普通模式开发,其实就多了步骤2。
nanachi默认只支持install git 工程(nanachi install xx@yyy.git --branch yourBranch)。
但 nanachi 支持用户可以自定义安装方式,比如 install 压缩包。
命令行:nanachi install tarName@version
但需要一些额外配置。在你的项目工程跟目录中新建一个 nanachi.config.js
配置文件。
module.exports = {
chaikaConfig: {
onInstallTarball: function(tarName, version){
let preUrl = 'http://xxx/yyy';
let tarUrl = `${preUrl}/${version}/${version}/${tarName}-${version}.zip`;
return tarUrl;
}
}
}
在该配置中生命周期 onInstallTarball
有两个参数。分别代表压缩包名,已经压缩包版本。该函数返回值就是压缩包的远程地址。
当执行命令nanachi install tarName@version
时候,配置中的 onInstallTarball
函数会劫持命令行中 tarName
和 version
, 并作为函数的参数。你只需要在该函数中返回一个压缩包的远程地址,nanachi 就会帮你下载。
此功能需在你当前项目的package.json中配置modules
字段
{
"modules": {
"yourModuleName": "yourBranch",
"yourModuleName": "yourTag"
}
}
然后命令行执行 nanachi install
, 则会批量安装modules
字段里面配置的所有拆卡工程。
nanachi install ...
package.json
中配置字段。 {
"nanachi": {
"chaika": true //这是告诉 nanachi,当前快发模式为“拆库”模式。
}