sorrycc/blog

从 atool-build + dora 到 roadhog

sorrycc opened this issue · 19 comments

这几天收到比较多关于 roadhog疑问,为啥用 roadhog,啥时不用 roadhog,怎么从 atool-build + dora 切换到 roadhog 等等。解释如下:

roadhog 和 atool-build + dora 有啥区别?

配置

roadhog 是约束型配置,基于 JSON 格式,给出有限的配置方式;atool-build + dora 是扩展型,表现为插件和编程 webpack.config.js 的方式。

功能

标了 的后续可能会支持,看需求吧。

roadhog 的劣势:

  • 暂不内置 mock 方案,通过 proxy 和其他服务(比如 json-server )配合使用,已内置更好用的 mock 方案,sorrycc/roadhog#59
  • 暂不能扩展没有内置的 webpack 配置,比如要用 sass 现在是不行的,已支持 sorrycc/roadhog#36
  • server 无插件机制,不能扩展

roadhog 的优势:

为啥用 roadhog?

既然 roadhog 功能没 atool-build + dora 强大,那为啥要切换呢?

  • 体验好,基于 create-react-app,比如有非常友好的 错误处理
  • 配置简单,基于 JSON,比如禁用 CSS Modules 只要配"disableCSSModules": true
  • 黑盒升级,就算之后 roadhog 换成 rollup 或其他的,用户也不需要更改配置

啥情况下不换 roadhog?

以下情况不推荐换 roadhog 。

  • 有强定制需求,比如用 sass 等
  • 有强 mock 数据需求,并且之前通过 dora-plugin-proxy 写了很多 mock 的
  • 无线,并且有强定制需求的, 待调研

修改步骤

修改 package.json

删除 atool-builddora 相关依赖,加上 roadhog 依赖。

$ npm install roadhog --save-dev

修改 scripts 部分,让 startbuild 走 roadhog:

"start": "roadhog server"
"build": "roadhog build"

可参看这个 Commitdva-example-user-dashboard

新增 .roadhogrc

如果是用 dva + antd 的组合,babel 插件部分通常这么配:

"extraBabelPlugins": [
  "transform-runtime",
  ["import", { "libraryName": "antd", "style": "css" }]
],
"env": {
  "development": {
    "extraBabelPlugins": [
      "dva-hmr"
    ]
  }
}

然后把 webpack.config.js 中的配置参考 roadhog#配置 迁移到 .roadhogrc 中。

删除 webpack.config.js

(完)

roadhog 什么时候可以加上mock方案

@nickzheng sorrycc/roadhog#22,预计 0.5 里加,下下周,当然有 PR 的话会更快点。

期待mock方案 👍

tungh commented

能不能加上编译的时候按需打包?
举例:编译的时候根据不同的模块业务逻辑编译出 A、B、C、D、E
然后方便做按需加载?

能不能加上编译的时候按需打包?

按需加载需要框架的支持,webpack 默认就是支持按需打包的,可以查下 webpack 的文档。

tungh commented

不好意思,我是看了哪篇文章忘记了,说不推荐在roadhog配置webpack,会影响什么的。在webpack里直接配置那是没问题的。

@tungh https://github.com/sorrycc/roadhog/releases/tag/0.4.0 这个? 动态加载不需要做额外配置就支持的。

CaseSensitivePathsPlugin误报,删除model和app.use(model)后,还是报module not found。

roadhog如何配置支持 devToolsExtension开发,方便redux调试,查看state数据

找到了,看了dva的源代码。配置__REDUX_DEVTOOLS_EXTENSION__ 即可,如

if (window.devToolsExtension) {
  window.__REDUX_DEVTOOLS_EXTENSION__ = window.devToolsExtension; // eslint-disable-line
}

希望楼主将这个给加到dva的介绍里面。

那默认dva是推荐使用 roadhog 和 atool-build + dora?我见antd的官网例子使用的是roadhog,但实际dva-cli生成的是atool-build+dora

怎么加sass配置?

mark

这玩意能用于正式生产环境么?

roadhog 不能配置sass,这点很头大。

roadhog生成的index.js文件过大,导致页面加载过慢,如何将index.js文件减小?

请问楼上的问题解决了吗? 我也出现了

./src/index.js
Module build failed: Error: /Users/xxx/Documents/work/project/react-dva/src/index.js: [babel-plugin-dva-hmr error] You must set the `entries` option.

这个怎么解决呢?求教

@shellteo 所以这时候自己写配置更方便,code spliting,将vender提出去