RDA应用在Docker中基于选择的RDC镜像运行。RDE工具会将RDC镜像中的template目录与RDA应用的app目录业务代码整合到一起,RDC模式选择就是整合方式的选择,我们提供了两种整合方式:integrate
和 origin
,默认是 integrate
。
在Docker中会生成.integrate目录。app和template将会根据rdc.config.js中的mappings配置,合并到.integrate目录下,形成完整的运行时目录。npm run serve 命令实际运行在此目录下。
app
|- components/
|- App.vue
rda.config.js
app
template
|- public/
|- src/
| |- main.js
|- package.json
rdc.config.js
mappings: [{
from: 'app/App.vue',
to: 'src/App.vue'
}, {
from: 'app/components',
to: 'src/components'
}],
app/
template/
node_moduels/
.integrate/
|- public/
|- src/
| |- components/
| |- App.vue
| |- main.js
|- package.json
下图展示了在RDA应用中执行rde lint
命令时,内部执行的逻辑;
首先,会将本地的app目录和rda.config.js文件,mount到Docker容器中
在Docker容器中,会先渲染template目录到.integrate目录
然后,按照rdc.config.js中配置的mappings属性,将app目录中对应的文件拷贝到.integrate目录的对应位置
最后, 在.integrate目录下执行npm run lint
与integrate模式的不同在于, Docker中运行时,不会合并app和template目录,只是渲染template目录为runtime目录,后直接在runtime目录下执行`npm run script, 如果你评估后认为配置webpack支持这样的目录结构成本较低的情况下,可以使用这种模式;
假设RDA应用目录结构、RDC工程目录结构以及rdc.config.js中mapping的配置和之前一致;
app/
template/
node_moduels/
runtime/
|- public/
|- src/
| |- main.js
|- package.json
下图展示了在RDA应用中执行rde lint
命令时,内部执行的逻辑;
首先,会将本地的app目录和rda.config.js文件,mount到Docker容器中
在Docker容器中,会先渲染template目录到runtime目录
最后, 在runtime目录下执行npm run lint
在origin
模式下,npm run lint
命令运行在runtime目录下,runtime下直接引用外层app目录下代码,需要RDC开发者合理的配置webapck、eslint-loader、ts-loader等。