6

我正在将一个简化的开发过程与 react 和 react-native 放在一起:

  • 鼓励包裹,
  • 使用 babel 转换es6js(它在发布/安装之前编译),
  • 有一个游乐场,让您可以同时使用原生组件和 Web组件

它的网络部分非常好。这是引起问题的原生问题,它与 react-native 的打包程序有关。

底线是:如果包是通过 Playground 链接npm link或直接从 Playground 需要的,如require('../../')react-native 的依赖解析器将永远尝试识别我的包中的依赖项node_modules,大多数情况下它永远不会完成它。

我发现的临时解决方案是在 Playground 中安装该软件包,但这涉及到每次我进行更新时都重新安装它,这不是很好,因为您无法立即看到您的更改(即使它会自动,这需要时间)。

我相信更好的解决方案是要求依赖解析器忽略那些我不需要的特定模块(devDependencies主要是那些!)。我尝试通过向该列表添加路径甚至对依赖解析器进行检查来修改react-native/packager/blacklist.js ,但这些都不起作用。

对打包程序有更多经验的人可以给我一个提示,告诉我如何让依赖解析器通过吗?或者,如果可以分离打包程序并将转换过程留给选择,那就太好了,但我也不知道这是否可行。

4

1 回答 1

10

根据以下评论,我找到了以下解决方案default.config.js

* If you need to override any of this functions do so by defining the file
* `rn-cli.config.js` on the root of your project with the functions you need
* to tweak.

rn-cli.config.js在项目的根目录中创建一个包含以下内容的:

var blacklist = require('react-native/packager/blacklist');

var config = {
  getBlacklistRE(platform) {
    return blacklist([
      /node_modules\/my-package\/excluded-dir\/.*/
    ]);
  }
};

module.exports = config;

blacklist函数的第二个参数是黑名单路径的附加列表,可以是正则表达式。有关react-native/packager/blacklist.js更多示例,请参阅。

于 2016-01-15T06:11:15.583 回答