Skip to content
This repository has been archived by the owner on May 13, 2019. It is now read-only.

直接使用 Libraries/ 而非 babel 转换过的 lib/ #145

Merged
merged 10 commits into from
Aug 23, 2016

Conversation

flyskywhy
Copy link
Contributor

@flyskywhy flyskywhy commented Aug 16, 2016

实际使用 react-web 经常会需要修改 react-web 本身,而经过 babel 转换过的代码修改起来太累。在看到 react-native 和一些 react-native 第三方库比如 react-native-scrollable-tab-view 都直接在 node_modules/ 中呈现未经 babel 转换的代码后,以及为了能直接让 react-web start 使用那些 react-native 第三方库,所以我做了这些修改,主要是通过 webpack.config.js 中的 exclude: /(node_modules/(?!react))/ 让 babel 在编译/运行 APP 的过程中去处理 node_modules/react*,如果你们接受这个 pull request 的话,我觉得你们只需要将 npm install --save git+https://github.com/flyskywhy/react-web.git 这句修改成你们的 github 地址合并到 react-web init 的脚本中,并修改 README.md 中相应的地方。

另外还修改了Touchable 组件的 BUG ,以及添加了 LayoutAnimation 和 RefreshControl 这两个组件,在 Image 组件中添加了 getSize()。

还有就是在 webpack.config.js 中使用了 cheap-module-eval-source-map ,这样调试 BUG 时就能很容易定位到精确的源代码文件而不是找不到北的 bundle.js

在经过这些修改后, https://github.com/flyskywhy/noder-react-native 就能正常运行 web 版了

附: 我看到 携程 的 react-web 修改版 https://www.npmjs.com/package/moles-web 中添加了不少新组件,你们是否能其合并过来?

@yuanyan
Copy link
Contributor

yuanyan commented Aug 17, 2016

@flyskywhy “直接使用 npm install --save git+https://github.com/flyskywhy/react-web.git” 这个commit需要重新编辑下

failure: (error: any) => void,
) {
let wrap = document.createElement('div'),
img = new Image(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

使用 new window.Image, 可无需修改 Image 为 ComponentImage

@flyskywhy
Copy link
Contributor Author

ComponentImage 已回复为 Image

“直接使用 npm install --save git+https://github.com/flyskywhy/react-web.git” 这个commit需要重新编辑下,是指完全回复到之前的使用 lib/ 而非 Libraries/ 的状态吗?还是说再进一步深入修改完 react-web init 的脚本?

@yuanyan
Copy link
Contributor

yuanyan commented Aug 18, 2016

@flyskywhy README修改了npm install的地方

@flyskywhy
Copy link
Contributor Author

npm install 的 github-url 已从 flyskywhy 改为 taobaofed

如果您说的是 npm install 的地方要恢复到最早的 npm install react-web --save ,那请您在接受本 pull request 后做这两个操作:恢复成 npm install react-web --save ;并同时删除 package.json 中不会再用到的

"prepublish": "node scripts/publish",

需要您再做一些操作的原因是,我只是觉得理论上发布到 npm 前需要做这两个操作,但我没法发布因而无法进行实践。

当然如果您也觉得 npm install --save git+https://github.com/taobaofed/react-web.git 比 npm install react-web --save 更方便,那就不用再做修改了。

@yuanyan yuanyan merged commit 4168053 into taofed:master Aug 23, 2016
@fov42550564
Copy link
Contributor

直接编译的话,像react-art这样的库就不能用,怎么处理?

@fov42550564
Copy link
Contributor

RefreshControl不能用,下来的时候无效

@flyskywhy
Copy link
Contributor Author

@fov42550564 ,你把具体问题列出来,别人才好帮忙解决。

具体到 react-art ,

如果 webpack 的错误提示是

Invalid:
  `{ presets: [{option: value}] }`

则可任选如下几种解决方法之一:

1、删除 react-art/.babelrc 文件

2、按照 react-art/.babelrc 中的需求,npm install babel-preset-react babel-preset-es2015

3、把 web/webpack.config.js 中的

  include: [config.paths.src],
  exclude: [path.sep === '/' ? /(node_modules\/(?!react-))/ : /(node_modules\\(?!react-))/]

修改为

  include: [
    config.paths.index,
    path.join(ROOT_PATH, 'node_modules/react-web'),
    path.join(ROOT_PATH, 'app')
  ],
  exclude: [
    path.join(ROOT_PATH, 'node_modules/react-web/node_modules/immutable/dist/immutable.js'),
  ]

如果 webpack 的错误提示是

Cannot resolve module 'react/lib/ReactInstanceMap'

则解决方法是 reactjs/react-art#104 中提到的

sed -i -e 's:react/lib:react-dom/lib:g' node_modules/react-art/lib/ReactART.js

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants